2017-03-29 38 views
1

我有一個桌面應用程序,我正在建設檢查一個QSetting值,如果它沒有設置顯示一個QMainWindow類,但如果是,顯示一個不同的QMainWindow類。這兩個類在這一點上是完全相同的,因爲它很早就沒有包含任何東西。QMainWindow不.show()但.showFullScreen()的作品

在我main功能,這是我的本錢:

int main (int argc, char *argv[]) { 
    ... 

    if (userToken == "NO_USER") { 
     LoginWindow w; 
     w.show(); 
    } else { 
     MainWindow w; 
     w.show(); 
    } 

    return a.exec(); 
} 

在這個從我創建的項目設置默認項目之間唯一的區別是增加了有條件的窗口負荷。 MainWindowLoginWindow都沒有加載與它們相關聯的ui文件以外的任何內容,它們在功能上是相同的。

的怪事是,如果我的LoginWindoww.showFullScreen()它就會出現,並佔據整個屏幕,如果我做w.show()什麼都沒有發生,沒有編譯器警告|錯誤,應用程序運行正常,只是沒有窗口。

如果我刪除條件語句和LoginWindow引用,MainWindow顯示正常。

任何想法爲什麼呼叫.showFullScreen()將工作,但在同一類呼叫.show()不會?

回答

0

我不確定這是否解決了您的問題,但是您的代碼中肯定存在一個錯誤。您將堆棧中的窗口對象放在一個緊密的範圍內,並且您知道這些對象一旦超出範圍就會被破壞。你正在做的是在應用程序啓動之前讓它們超出範圍。

請改爲嘗試這個辦法:

int main (int argc, char *argv[]) { 
    ... 


    if (userToken == "NO_USER") { 
     LoginWindow w; 
     w.show(); 
     return a.exec(); 
    } else { 
     MainWindow w; 
     w.show(); 
     return a.exec(); 
    } 


} 
+0

這是確切的問題,得到了上#qt IRC頻道一些幫助昨天回來了,以今天在這裏回答,但你打一針見血!感覺有點愚蠢在這一個... –

相關問題