1

我使用这些事件QEvent::ApplicationActivateQEvent::ApplicationDeactivate在需要时显示/隐藏我的应用程序的某些部分。

但是现在,这些事件被标记为已弃用

此枚举已被弃用。请改用 ApplicationStateChange。

所以我试图切换到这个事件。它应该在应该触发的时候触发,但是我找不到通过某种强制转换或任何 getter 来获取应用程序状态的方法。

有任何想法吗 ?

4

1 回答 1

4

就像任何其他事件一样,您需要将其转换为更具体的类型以获取事件属性。班级是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);
}
于 2014-01-24T18:30:51.080 回答