使用Qt将应用程序发送到后台

使用Qt将应用程序发送到后台,qt,background,Qt,Background,我有两个GUI应用程序。主人必须启动奴隶。主设备必须从前台开始,从设备必须从后台开始。奴隶稍后必须来到前台 有没有一种方法可以使用Qt实现这一点 迄今为止: ... if( master() ) { window->show(); } else { window->showMinimized(); } showmimized()有一个令人讨厌的副作用,即当从站首先到达前台时,它会“最大化” 那么,有没有一种方法可以在另一个应用程序后面启动一个应用程序?一种可能是在相应的窗

我有两个GUI应用程序。主人必须启动奴隶。主设备必须从前台开始,从设备必须从后台开始。奴隶稍后必须来到前台

有没有一种方法可以使用Qt实现这一点

迄今为止:

... 
if( master() ) {
  window->show();
} else {
  window->showMinimized();
}
showmimized()
有一个令人讨厌的副作用,即当从站首先到达前台时,它会“最大化”


那么,有没有一种方法可以在另一个应用程序后面启动一个应用程序?

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

另一个选项是尝试停止小部件被激活。我已经快速查看了
QWidgetPrivate::show_sys()
(在
src/gui/kernel/qwidget_win.cpp
中)的Qt源代码。似乎有一个属性
Qt::WA_show without activating
,指示窗口的显示方式。看来这可以解决你的问题