2011-06-03 39 views
4

我想知道是否可以專注於我的應用程序,即使它失去了重點?Qt - 關注失去焦點的應用程序?

我的應用程序正在運行一個線程,一旦我退出它,我想將我的窗口應用程序放在前面。
我試過下面的代碼,它的工作重點放在我想要的小部件上,但是如果你在Firefox上,它會在任務欄中閃爍一次,並且不重點:(

this->activateWindow(); 
this->show(); 
this->setFocus(); 

編輯:這將做到這一點,但我不希望我的應用程序留在上面......如果我刪除標誌,它失去焦點=/

this->setWindowFlags(Qt::WindowStaysOnTopHint); 
this->activateWindow(); 
this->show(); 
this->setFocus(); 

預先感謝您爲您解答。

+1

除非此軟件僅適用於您自己的計算機,否則請勿這樣做。任何有信譽的操作系統都不會允許你的應用程序跳到前臺並破壞用戶可能已經做的任何事情。任何黑客,你發現,允許你這樣做只會是一個黑客,並會導致你的軟件被立即從我的電腦上刪除至少:) – 2011-06-03 18:17:28

+0

但這是軟件的目的。人們想要這個功能,哈哈。 – Fabien 2011-06-03 18:18:15

+0

您的原始解決方案實際上適用於Ubuntu 10.04,但不適用於Windows。一個拙劣的解決方案可能是實現focusOutEvent並在那裏刪除StaysOnTop標誌,但我同情上面的Arnold(Raymond Chen多次對類似主題進行了評論,論點是「如果每個人都這麼做?」:http:// blogs。 msdn.com/b/oldnewthing/archive/2005/06/07/426294.aspx)。 – ctd 2011-06-03 20:56:21

回答

0

嘗試

this->setWindowState(Qt::WindowActive); 

它爲我工作。 (Qt 4.8,Windows 7,MinGW 4.4)

編輯:我已經發現,這通常只適用於窗口目前最小化。所以如果它不工作嘗試添加

this->setWindowState(Qt::WindowMinimized); 

之前。

+0

我不明白這是如何在Windows上工作的,因爲前臺應用程序必須明確允許您的應用程序進入前臺。請參閱http://msdn.microsoft.com/en-us/library/windows/desktop/ms632668(v=vs.85).aspx – 2012-07-31 06:24:52

+0

@FrankOsterfeld我搞砸了一點點和更新後的帖子關於我的發現(即解決方法我發現) – chipgw 2012-08-22 18:12:07

相關問題