我使用这些事件QEvent::ApplicationActivate
并QEvent::ApplicationDeactivate
在需要时显示/隐藏我的应用程序的某些部分。
但是现在,这些事件被标记为已弃用:
此枚举已被弃用。请改用 ApplicationStateChange。
所以我试图切换到这个事件。它应该在应该触发的时候触发,但是我找不到通过某种强制转换或任何 getter 来获取应用程序状态的方法。
有任何想法吗 ?
就像任何其他事件一样,您需要将其转换为更具体的类型以获取事件属性。班级是QApplicationStateChangeEvent
。文档出人意料地对它保持沉默,但它存在并在event.h
. 以下代码在我的 Qt 5.1 安装中运行良好:
#include <QApplicationStateChangeEvent>
bool MainWindow::eventFilter(QObject *o, QEvent *e) {
if (e->type() == QEvent::ApplicationStateChange) {
qDebug() << "state:"
<< static_cast<QApplicationStateChangeEvent*>(e)->applicationState();
}
return QMainWindow::eventFilter(o, e);
}