2009-12-31 25 views
0

當關閉消息發送到系統時,我需要一個事件處理程序。 任何人都可以幫忙嗎?當用戶手動關閉系統時的事件處理程序

當我們嘗試關閉系統時,如果有任何對話框打開,關閉進程終止。我不希望這發生在我的應用程序中。即如果有任何對話框從我的應用程序打開,我試圖關閉我的系統,那麼它不應該阻止關機過程。這個實現是可能的嗎?

感謝, 拉胡爾

回答

0

嘗試重寫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(); 
} 

希望這會有所幫助,至於

+0

對不起,我在Mac上覆制了同樣的示例,它不起作用。 – MacGeek 2010-01-01 10:01:04

相關問題