2

我有两个 GUI 应用程序。Master 必须启动 Slave。Master 必须在前台启动,slave 必须在后台启动。奴隶稍后必须来到前台。

有没有办法使用 Qt 来实现这一点?

到目前为止的尝试:

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

showMinimized()有一个令人讨厌的副作用,即当奴隶首先来到前台时,它会被“最大化”。

那么有没有办法在另一个应用程序后面启动一个应用程序?

4

1 回答 1

2

一种可能性是在相应的窗口上显式调用raise()或(请参阅文档)。不过,这可能会导致短暂的视觉故障,窗口短暂出现然后被推到后面,这可能会也可能不会接受。我将建议使用强制将应用程序置于前台,但文档指出这在 Windows 上是不允许的。lower()QWidget::activateWindow()

另一种选择是尝试阻止小部件被激活。我快速浏览了QWidgetPrivate::show_sys()(in src/gui/kernel/qwidget_win.cpp) 的 Qt 源代码。似乎有一个属性Qt::WA_ShowWithoutActivating决定了窗口的显示方式。看起来这可能会解决您的问题,例如,请参阅在 Qt 中显示窗口而不窃取焦点

于 2012-10-11T15:35:00.490 回答