2013-02-13 95 views
0

我一直在反對這個模式,但我終於放棄了並尋求幫助。qt'x'在全屏模式下不能關閉應用程序

我的問題是,我的程序有一個settings.ini,我想在程序關閉時更新。我已經實現了這一點使用:

kegTrackerce.h

protected: 
    void closeEvent(QCloseEvent *event); 

void KegTrackerCE::closeEvent(QCloseEvent *event) 
    { 
     saveSettings(); 
     event->accept(); 
    } 

這節省了設置,當我經過文件並退出這是偉大的,但是當關閉該程序我點擊右上角的「X」,窗口消失,但程序不退出(沒有退出代碼),再加上當我再次打開應用程序時,程序立即打開而不是加載。

我已經確定,當我包括下面的代碼

KegTrackerCE::KegTrackerCE(QWidget *parent, Qt::WFlags flags) 
    : QMainWindow(parent, flags) 
{ 
//A heap of other stuff here 
KegTrackerCE::showFullScreen(); 
} 

當我註釋掉showfullscreen,TA大新的「X」的作品,因爲它應該設置文件進行適當更新,這只是發生,該程序從內存中清除,我得到0退出代碼。

我真的不希望離開應用程序的最大化,而不是全屏,因爲屏幕空間是有限的,因爲它沒有一個頂部的冗餘欄。

感謝您的幫助球員,我已經試過的東西堆,我已經包括:

qApp->setQuitOnLastWindowClosed(true); 

隨着

void KegTrackerCE::lastWindowClosed(){ 
QApplication::quit(); 
} 

但是,這並不做任何事情。

我相當肯定closeEvent()沒有被調用時,按下x時,事情是在全屏。

反正,請幫忙!!您的幫助將非常感謝!

謝謝你們

回答

0

「我相當確定的closeEvent()是沒有得到所謂的當按下X時,就是在全屏所有」把一個破發點的函數內部檢查,因爲我沒有看到任何關閉closeEvent的原因沒有被調用。

並致電hide()內部closeEvent event->accept();之前。可能不是一個解決方案,但只是爲了檢查

+0

在KegTrackerCE :: closeEvent(QCloseEvent * event)中添加QMainWindow :: closeEvent(event) – 2013-02-13 09:40:20

+0

hay thanks for你的迴應。我已經嘗試了隱藏和qmainwindow方法。我不知道爲什麼x按下時沒有調用關閉事件,我該如何放置一個斷點? – user2067103 2013-02-13 11:54:19

+0

取決於您使用的IDE,我使用visual studio。你可以嘗試而不是showFullScreen(),使用showMaximized() – 2013-02-13 12:19:44

1

有點環顧四周,我發現在這之後:

Nonclosing close button in Windows Mobile (developed with Qt)

這是一個解決方案,但我很高興我的修補程序。基本上,按下按鈕時,win ce會使應用程序默認運行。有人談論設置一些風格,但我認爲簡單地刪除x是最簡單和最有效的方法

相關問題