用户手动关闭系统时的事件处理程序

时间:2009-12-31 06:58:43

标签: macos qt macos-carbon

当关闭消息发送到系统时,我需要一个事件处理程序。 有人可以帮忙吗?

当我们尝试关闭系统时,如果任何对话框打开,则关闭进程终止。我不希望在我的应用程序中发生这种情况。即如果从我的应用程序打开任何对话框,我尝试关闭我的系统,那么它不应该阻止关机过程。这种实现可能吗?

谢谢, 拉胡

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

尝试覆盖QApplication::commitData只要用户关闭系统并且您的应用程序仍在运行,就应该调用它。

  

此功能处理会话   管理。它被调用时   QSessionManager想要应用程序   提交所有数据。

     

通常这意味着保存全部开放   获得许可后的文件   用户。此外,你可能想要   提供用户可以使用的手段   取消关机。

下面是一个例子(从未尝试过使用macs;虽然在我的ubuntu上运行正常):

main.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();
}

希望这有帮助,尊重