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

时间:2012-10-11 14:51:57

标签: qt background

我有两个GUI应用程序。大师必须启动奴隶。主人必须从前台开始,奴隶必须在后台开始。奴隶必须稍后到达前台。

有没有办法用Qt实现这个目标?

到目前为止

尝试:

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

showMinimized()具有令人讨厌的副作用,当奴隶首先到达前景时,它会“最大化”。

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

1 个答案:

答案 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