我有兩個GUI應用程序。主人必須啓動奴隸。主人必須從前景開始,奴隸必須從背景開始。奴隸後來必須走到前臺。用Qt發送應用程序到背景
有沒有一種方法可以實現這個使用Qt?
嘗試至今:
...
if(master()) {
window->show();
} else {
window->showMinimized();
}
showMinimized()
有討厭的副作用,即當奴隸來到前臺第一,它就會「最大化」。
那麼有沒有辦法在後面啓動另一個應用程序?
我有兩個GUI應用程序。主人必須啓動奴隸。主人必須從前景開始,奴隸必須從背景開始。奴隸後來必須走到前臺。用Qt發送應用程序到背景
有沒有一種方法可以實現這個使用Qt?
嘗試至今:
...
if(master()) {
window->show();
} else {
window->showMinimized();
}
showMinimized()
有討厭的副作用,即當奴隸來到前臺第一,它就會「最大化」。
那麼有沒有辦法在後面啓動另一個應用程序?
一種可能性是在相應的窗口上明確地呼叫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