2012-10-11 28 views
2

我有兩個GUI應用程序。主人必須啓動奴隸。主人必須從前景開始,奴隸必須從背景開始。奴隸後來必須走到前臺。用Qt發送應用程序到背景

有沒有一種方法可以實現這個使用Qt?

嘗試至今:

... 
if(master()) { 
    window->show(); 
} else { 
    window->showMinimized(); 
} 

showMinimized()有討厭的副作用,即當奴隸來到前臺第一,它就會「最大化」。

那麼有沒有辦法在後面啓動另一個應用程序

回答

2

一種可能性是在相應的窗口上明確地呼叫raise()lower()(參見docs)。雖然這可能會導致短暫的視覺干擾,但窗口短暫出現然後被推到後面,後者可能會或可能不會被接受。我打算建議使用QWidget::activateWindow()來強制應用程序到達前臺,但docs請注意,這在Windows上是不允許的。

另一種選擇是嘗試阻止小部件激活。我已經快速瀏覽了QWidgetPrivate::show_sys()(位於src/gui/kernel/qwidget_win.cpp)的Qt源文件。似乎有一個屬性Qt::WA_ShowWithoutActivating決定了如何顯示窗口。看起來這可能會解決你的問題,例如見Show window in Qt without stealing focus

相關問題