我希望在用户切换到另一个应用程序时收到通知,因此我使用 installEventFilter 方法来捕获事件:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->installEventFilter(this);
}
bool MainWindow::eventFilter(QObject *sender, QEvent *event)
{
qDebug() << event->type();
return QMainWindow::eventFilter(sender, event);
}
当我切换到另一个应用程序时,我收到以下事件:
当我切换到另一个应用程序时,我不应该收到 ApplicationDeactivate (似乎已被弃用)或 ApplicationStateChange 吗?
我在 MacOS 下并使用以下 Qt 版本进行测试: 5.1.1 , 5.2.0 , 5.2.1 。
答案 0 :(得分:1)
您应该连接到QGuiApplication::applicationStateChanged
信号。如果它没有触发,那就是一个bug,应该报告。不过,我不认为你那样做。
ApplicationStateChange
事件由Qt内部使用,你不应该担心它。它可能被发送到应用程序实例。此外,所有这些都适用于Qt 5.2.x.对于5.1及更早版本,情况有所不同。