當關閉消息發送到系統時,我需要一個事件處理程序。 任何人都可以幫忙嗎?當用戶手動關閉系統時的事件處理程序
當我們嘗試關閉系統時,如果有任何對話框打開,關閉進程終止。我不希望這發生在我的應用程序中。即如果有任何對話框從我的應用程序打開,我試圖關閉我的系統,那麼它不應該阻止關機過程。這個實現是可能的嗎?
感謝, 拉胡爾
當關閉消息發送到系統時,我需要一個事件處理程序。 任何人都可以幫忙嗎?當用戶手動關閉系統時的事件處理程序
當我們嘗試關閉系統時,如果有任何對話框打開,關閉進程終止。我不希望這發生在我的應用程序中。即如果有任何對話框從我的應用程序打開,我試圖關閉我的系統,那麼它不應該阻止關機過程。這個實現是可能的嗎?
感謝, 拉胡爾
是的,看着NSWorkspaceWillPowerOffNotification
嘗試重寫QApplication::commitData每當用戶關閉系統和您的應用程序仍在運行,應該叫。
下面此功能處理會話 管理。當QSessionManager希望應用程序 提交其所有數據時,它會被調用。
通常這意味着保存所有打開的 文件,獲得 用戶的許可後。此外,您可能想要 提供一種方法,用戶可以通過該方法取消關機。
就是一個例子(從來沒有與蘋果電腦試了一下,雖然工作正常在我的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();
}
希望這會有所幫助,至於
對不起,我在Mac上覆制了同樣的示例,它不起作用。 – MacGeek 2010-01-01 10:01:04
我不能使用可可。 – MacGeek 2010-01-01 10:00:27