没有针对ApplicationDeactivate的QEvent,也没有ApplicationStateChange

时间:2014-03-23 20:52:25

标签: macos qt events

我希望在用户切换到另一个应用程序时收到通知,因此我使用 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);
}

当我切换到另一个应用程序时,我收到以下事件:

  • WindowDeactivate
  • ActivationChange
  • UpdateRequest
  • 油漆

当我切换到另一个应用程序时,我不应该收到 ApplicationDeactivate (似乎已被弃用)或 ApplicationStateChange 吗?

我在 MacOS 下并使用以下 Qt 版本进行测试: 5.1.1 5.2.0 5.2.1

1 个答案:

答案 0 :(得分:1)

您应该连接到QGuiApplication::applicationStateChanged信号。如果它没有触发,那就是一个bug,应该报告。不过,我不认为你那样做。

ApplicationStateChange事件由Qt内部使用,你不应该担心它。它可能被发送到应用程序实例。此外,所有这些都适用于Qt 5.2.x.对于5.1及更早版本,情况有所不同。