【发布时间】:2016-02-24 16:19:41
【问题描述】:
我正在使用 QT 4.8.5 执行 QWizard,在某些页面中我必须关闭其他一些应用程序并退出我的程序。这工作正常,但现在我想显示一条弹出消息,告诉用户程序正在重新启动(我的其他部分是我的一部分,我的是最后一个总是关闭的)。我用来显示弹出窗口的代码是下一个,我将它放在 QWizardpage 的 validatepage 中:
QMessageBox *msgBox1 = new QMessageBox;
msgBox1->setWindowTitle("Title...");
msgBox1->setIcon(QMessageBox::Information);
msgBox1->setText(" blablablalbal bla bla bla.");
msgBox1->setWindowModality(Qt::NonModal);
msgBox1->show();
QCoreApplication::processEvents(); // without this line, the show does nothing and I can't see my pop up window
所以问题是:使用该代码,当我在该向导页面中并单击完成时,它会启动 QMessageBox,而(在后面)程序正在重新启动其他应用程序,然后自行关闭(使用 QApplication::quit( ); ) 这正是我想要的...但是弹出窗口中没有显示任何消息...我看不到图标、标题或文本... :S 我不知道为什么 :(
而当使用 ->exec();而不是显示,而是显示图标,标题和文本,但是当弹出窗口出现时,在用户关闭该弹出窗口之前什么都不做......:S
我知道 .exec() 会冻结所有内容,直到用户关闭弹出窗口,而 show 不会...
那么...我怎样才能看到带有 show() 行为的文本?我不希望用户与该弹出窗口进行交互,我只需要在关闭所有窗口的同时显示弹出窗口,直到我的程序也关闭...
非常感谢!
【问题讨论】:
-
评论的最后一行说
show()调用没有这个,但你的问题说你什么都看不到......你能澄清一下吗?这似乎是一个矛盾。无论如何,相关的半骗子:comments.gmane.org/gmane.comp.lib.qt.general/30706 -
@eclarkso 是的,对不起,也许我解释错了...如果我不使用 processEvents 行,那么弹出窗口永远不会出现,就好像我没有编写该代码一样...虽然如果我放那行,我可以看到弹出窗口,但是这个弹出窗口是空的..没有消息,没有标题没有显示图标(并且它的初始化很好,我想好像我改变了一个 exe 的显示然后我看到它它应该(但在继续之前它会等待某人关闭它)希望现在更清楚:D
标签: c++ qt show qt4.8 qmessagebox