【问题标题】:Equivalent of QEvent ApplicationDeactivate等价于 QEvent ApplicationDeactivate
【发布时间】:2014-02-15 20:07:28
【问题描述】:

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: qt qevent


    【解决方案1】:

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

    【讨论】:

    • @MartinDelille WindowDeactivate 已弃用,但为了向后兼容而保留。它只是为了让旧的 Qt 程序正常工作,但不建议使用。
    猜你喜欢
    • 2023-04-11
    • 2014-04-14
    • 1970-01-01
    • 2022-01-12
    • 2013-08-08
    • 2011-09-19
    • 2016-10-26
    • 2014-07-28
    • 2010-10-12
    相关资源
    最近更新 更多