【发布时间】:2017-10-05 13:45:04
【问题描述】:
我正在尝试从我的main.cpp 中show() 一个隐藏的 MainWindow(实际上此时所有窗口都被隐藏了)。我试着做这样的事情:
QList<QWindow*> windows = QApplication::allWindows();
for (int i = 0; i < windows.size(); ++i) {
if (windows.at(i)->objectName() == "MainWindow")
windows.at(i)->show();
}
但它不起作用。
在QApplication::allWidgets() 的 Qt 文档中有一个注释:
注意:某些小部件可能会被隐藏。
好像这个函数没有列出隐藏的小部件,我想这与allWindows() 的情况相同,因为我在没有隐藏窗口并且工作正常的情况下测试了这段代码。
基本上在我做的void MainWindow::closeEvent函数中:
event->ignore();
hide();
然后我希望能够在单击应用程序图标时重新打开 MainWindow。
有没有人知道如何显示main.cpp 的隐藏窗口,或者可以指出我是否做错了什么?
编辑:这可能有效,我的问题出在完全不同的地方。
【问题讨论】:
-
您是否尝试过这里的示例代码:doc.qt.io/qt-5/qapplication.html#topLevelWidgets?根据文档,它应该可以工作。
-
很有趣,它也不起作用。
-
但这表明我提到的那些函数确实列出了隐藏文件,只是由于某种原因它们不能像我所期望的那样工作。
-
你怎么知道你的窗口是隐藏的?也许它根本不存在?
-
我现在正在测试的是,“X”关闭按钮只会隐藏应用程序,再次单击图标会显示上一个窗口。因此,我可以通过单击图标托盘中的“隐藏图标”(不确定我是否使用正确的词汇)返回到以前的状态 - 这就是我假设窗口仍然存在的原因。