我有类似的情况。
我有两个Qt应用程序,A和B,它们在套接字上通信。 我想带来的应用程序B弹出一个窗口,通过一个按钮的应用程序A.
我发现,有时部件的状态没有设置正确,所以在我的领域应用B的窗口小部件的event()
功能我做了以下:
bool MyWidgetB:event (QEvent * e)
{
QEvent::Type type = e->type();
// Somehow the correct state of window is not getting set,
// so doing it manually
if(e->type() == QEvent::Hide)
{
this->setWindowState(WindowMinimized);
}
else if(e->type() == QEvent::Show)
{
this->setWindowState((this->windowState() & ~WindowMinimized) |
WindowActive);
}
return QWidget::event(e);
}
我送从一个应用程序的命令B.在收到它,应用程序B调用下面的函数本身:
void BringUpWidget(QWidget* pWidget)
{
pWidget ->showMinimized(); // This is to bring up the window if not minimized
// but beneath some other window
pWidget ->setWindowState(Qt::WindowActive);
pWidget ->showNormal();
}
这个工作对我来说,在Windows XP,与Qt 3.3。我的MainWidget
来源于QWidget
。
我发现这也从QMainWindow
衍生的小部件的工作,但也有一些问题。就像其他孩子的窗户打开一样。
对于这种情况,我存储子窗口的位置并隐藏它们,然后使用BringUpWidget
函数带上我的MainWindow
小部件,然后恢复子窗口。
您可以查看这个答案:http://stackoverflow.com/a/17566801/1035613 – 2013-10-09 05:26:39