c++ - QMainWindow 不再是事件窗口

标签 c++ qt qt4

我正在用 Qt 制作一个简单的游戏,我想在用户切换到另一个窗口时暂停游戏(这可能是通过最小化它或不小心单击它旁边的窗口等)。我的游戏封装​​在 QMainWindow 中,因此我希望能够检测到它何时失去焦点。

为此我尝试了几种不同的方法,但都没有成功。我首先尝试重载 QMainWindow 的 focusOutEvent,但是这个方法只在我第一次用 setFocus 给窗口焦点时被调用。我还尝试重载窗口的 event(QEvent *) 方法来检查 QEvent::ApplicationActive 和 QEvent::ApplicationDeactivate。

我会发布我的 QMainWindow 的代码,但没有太多可展示的,我只是试图实现这两个方法,但都没有被调用。我没有做任何其他事情来设置这些方法(也许我错过了一步?)。

有谁知道确定您的 QMainWindow 是否“失去焦点”的好方法?

最佳答案

我曾经有过类似的需求,并通过重载我的 QMainWindow 的 event(QEvent*) 方法解决了它:

bool MyMainWindow::event(QEvent * e)
{
    switch(e->type())
    {
        // ...

        case QEvent::WindowActivate :
            // gained focus
            break ;

        case QEvent::WindowDeactivate :
            // lost focus
            break ;
        // ...
    } ;
    return QMainWindow::event(e) ;
}

关于c++ - QMainWindow 不再是事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731753/

相关文章:

qt - 基本 Qt GUI : QPushButton for Drawing a line

c++ - 信号和槽机制不适用于非 UI 线程

c++ - 如何创建可调整大小的 Qt 缩略图预览?

c++ - Qtilities : Custom property types for the property browsers?

c++ - 这段代码会泄漏内存吗? (引用,新的,但没有删除)

c++ - 如何防止 QDialog 类关闭

python - Ubuntu 中没有出现 PyQt4 菜单栏

c++ - QPixmap 不适用于存储在变量中的图像路径

c++ - 使用 TracePoint 在输出窗口中打印当前时间

c++ - 如何在 C++ 和 OpenGL 中分析我自己的函数?