2016-09-12 71 views
-2
void test() 
{ 
    if(flag==1) 
    { 
     qDebug("in if"); 
     showNormal(); 
     flag=0; 
    } 
    else 
    { 
     qDebug("in else"); 
     showMinimized(); 
     flag=1; 
    } 
} 

我使用QTimer來連接此功能。 我希望它運行如下:最小化,睡眠3秒,恢復到窗口模式,睡眠3秒,最小化....如何在qt中最小化時恢復到窗口模式

但實際結果是最小化,睡眠3,什麼都不做,睡眠3,什麼都不做,睡眠3,恢復到窗口模式。最小化後,有兩次該功能什麼都不做。如何發生這種情況,以及如何解決這個問題?

+0

這個問題太模糊了。如果你提供了更多的代碼 – Athena

+0

它會更好,這是一個非常簡單的程序,一個帶有按鈕的窗口。當你開始有代碼時,函數「testslots」將每3秒運行一次。我想窗口最小化,恢復,然後最小化,然後恢復。 (我的目的是測試如何在最小化模式下恢復主窗口)。代碼如下:https://github.com/iverhan/test.git – iverhan

+0

我已經從[github](https: //github.com/iverhan/test.git),並按照我的預期工作。我添加了一些額外的'qDebug'語句來確保所有內容都以正確的時間間隔被調用,並且看起來都很好。 –

回答

0

假設你的widget是W,然後嘗試

w->setWindowState(w->windowState() & ~Qt::WindowMinimized | Qt::WindowActive); 

恢復窗口,並

w->setWindowState(w->windowState() | Qt::WindowMinimized) 

顯示窗口最小化。你應該發佈更多的代碼,以便我們更好地理解問題。

相關問題