Macos 没有ApplicationActivate或ApplicationStateChange的QEvent
我希望在用户切换到其他应用程序时收到通知,因此我使用installEventFilter方法捕获事件:Macos 没有ApplicationActivate或ApplicationStateChange的QEvent,macos,qt,events,Macos,Qt,Events,我希望在用户切换到其他应用程序时收到通知,因此我使用installEventFilter方法捕获事件: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); this->installEventFilter(this); } bool MainWindow::eventFilter(QObje
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);
}
MainWindow::MainWindow(QWidget*父项):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
此->installEventFilter(此);
}
bool主窗口::事件过滤器(QObject*发送方,QEvent*事件)
{
qDebug()类型();
返回QMainWindow::eventFilter(发送方,事件);
}
当我切换到另一个应用程序时,会发生以下事件:
- 窗口停用
- 激活变化
- 更新请求
- 油漆
我在MacOS下,使用以下Qt版本进行测试:5.1.1、5.2.0、5.2.1。您应该连接到
QGuiApplication::applicationStateChanged
信号。如果它没有发射,那就是一个错误,应该报告。不过,我认为你不会那样做
ApplicationStateChange
事件由Qt内部使用,您不必担心它。它可能被发送到应用程序实例。此外,所有这些都是针对Qt5.2.x的。对于5.1和更早版本,情况有所不同