当关闭消息发送到系统时,我需要一个事件处理程序。任何人都可以帮忙吗?
当我们尝试关闭系统时,如果任何对话框打开,则关闭过程终止。我不希望这发生在我的应用程序中。即,如果从我的应用程序中打开任何对话框并且我尝试关闭我的系统,那么它不应该阻止关闭过程。这种实现可能吗?
谢谢,拉胡尔
当关闭消息发送到系统时,我需要一个事件处理程序。任何人都可以帮忙吗?
当我们尝试关闭系统时,如果任何对话框打开,则关闭过程终止。我不希望这发生在我的应用程序中。即,如果从我的应用程序中打开任何对话框并且我尝试关闭我的系统,那么它不应该阻止关闭过程。这种实现可能吗?
谢谢,拉胡尔
是的,看看 NSWorkspaceWillPowerOffNotification
尝试覆盖QApplication::commitData它应该在用户关闭系统并且您的应用程序仍在运行时调用。
该函数处理会话管理。当 QSessionManager 希望应用程序提交其所有数据时调用它。
通常这意味着在获得用户许可后保存所有打开的文件。此外,您可能希望提供一种用户可以取消关机的方法。
下面是一个示例(从未在 Mac 上尝试过;虽然在我的 ubuntu 上运行良好):
主.cpp:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QSessionManager>
class MyApplication : public QApplication
{
public:
MyApplication(int &argc, char **argv);
virtual void commitData(QSessionManager& sm);
};
MyApplication::MyApplication(int &argc, char **argv):
QApplication(argc, argv)
{
//???
}
void MyApplication::commitData(QSessionManager& sm)
{
// do smth here....
QApplication::commitData(sm);
}
int main(int argc, char *argv[])
{
MyApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
希望这会有所帮助,问候