相当于QEvent ApplicationDeactivate

时间:2014-01-24 17:58:46

标签: qt qevent

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

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

  

此枚举已被弃用。改为使用ApplicationStateChange。

所以我试图切换到这个事件。它应该被触发,但是我无法通过某种演员或任何获取者找到获得应用程序状态的方法。

有什么想法吗?

1 个答案:

答案 0 :(得分: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);
}