我有两个GUI应用程序。大师必须启动奴隶。主人必须从前台开始,奴隶必须在后台开始。奴隶必须稍后到达前台。
有没有办法用Qt实现这个目标?
到目前为止尝试:
...
if( master() ) {
window->show();
} else {
window->showMinimized();
}
showMinimized()
具有令人讨厌的副作用,当奴隶首先到达前景时,它会“最大化”。
那么有没有办法在后面启动另一个应用程序?
答案 0 :(得分:2)
一种可能性是在相应的窗口上明确调用raise()
或lower()
(请参阅docs)。这可能会导致瞬间视觉故障,其中窗口短暂出现然后被推到后面,这可能是也可能是不可接受的。我打算建议使用QWidget::activateWindow()
强制应用程序到前台,但docs注意到Windows上不允许这样做。
另一种选择是尝试阻止小部件被激活。我已经快速浏览了QWidgetPrivate::show_sys()
的Qt来源(在src/gui/kernel/qwidget_win.cpp
中)。似乎有一个属性Qt::WA_ShowWithoutActivating
决定了窗口的显示方式。看起来这可以解决您的问题,例如,请参阅Show window in Qt without stealing focus