Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 用户手动关闭系统时的事件处理程序_Macos_Qt_Macos Carbon - Fatal编程技术网

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

Macos 用户手动关闭系统时的事件处理程序,macos,qt,macos-carbon,Macos,Qt,Macos Carbon,我需要一个事件处理程序,当关闭消息被发送到系统时。 有人能帮忙吗 当我们试图关闭系统时,若任何对话框打开,关闭过程终止。我不希望在我的应用程序中发生这种情况。i、 e如果我的应用程序打开了任何对话框,并且我试图关闭系统,那么它不应该阻止关闭过程。这是否可能实现 谢谢, Rahul是的,请查看NSWorkspaceWillPowerOffNotification 尝试覆盖当用户关闭系统且应用程序仍在运行时,应调用它 此函数用于处理会话 管理层。当 QSessionManager需要该应用程序 提交

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

当我们试图关闭系统时,若任何对话框打开,关闭过程终止。我不希望在我的应用程序中发生这种情况。i、 e如果我的应用程序打开了任何对话框,并且我试图关闭系统,那么它不应该阻止关闭过程。这是否可能实现

谢谢,
Rahul

是的,请查看NSWorkspaceWillPowerOffNotification

尝试覆盖当用户关闭系统且应用程序仍在运行时,应调用它

此函数用于处理会话 管理层。当 QSessionManager需要该应用程序 提交其所有数据

通常这意味着保存所有打开的文件 文件,在获得 用户。此外,你可能想 提供一种用户可以使用的方法 取消关机

下面是一个例子(从未在Mac电脑上尝试过;不过在我的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();
}
#包括
#包括“mainwindow.h”
#包括
类MyApplication:公共QApplication
{
公众:
MyApplication(int&argc,字符**argv);
虚拟无效委员会数据(QSessionManager&sm);
};
MyApplication::MyApplication(int&argc,char**argv):
QApplication(argc、argv)
{
//???
}
作废MyApplication::commitData(QSessionManager和sm)
{
//在这里做smth。。。。
QApplication::commitData(sm);
}
int main(int argc,char*argv[])
{
MyApplication a(argc、argv);
主窗口w;
w、 show();
返回a.exec();
}
希望这有帮助,谢谢