![](/img/trans.png)
[英]Why does the Irrlicht window turn black when opening a QMessageBox?
[英]QMessageBox background colour is black when non modal
我想显示一个非模态的QMessageBox
,以通知在代码运行时发生了某些事情,然后在代码完成时QMessageBox
应该关闭。 父级是QWidget
。
如果我调用msgBox.show()
则它确实是非模式的,并且代码正在运行,但是msgBox
完全是黑色的,我无法找到一种方式来放置任何其他颜色以便可以写一些东西。
如果我调用msgBox.exec()
则背景颜色合适并且文本显示良好,但是它是模态的,除非用户按OK
否则代码将停止。
这是我的代码:
QMessageBox* msgBox=new QMessageBox(this);
msgBox->setWindowTitle("Title");
msgBox->setText("<font color=\"Black\">Some Text");
msgBox->setWindowModality(Qt::NonModal);
msgBox->setStyleSheet("background-color:white;");
msgBox->exec(); //with this line it is modal
//msgBox->show(); //with this line it is non modal but background is black
我还尝试了一个QWidget,如果我将其放置在其他地方,它将运行良好,并且由于后面运行的代码而在这里变黑。
如果有人能找到解决方案,我非常感谢您! :)
我建议使用信号/插槽机制来显示/隐藏QMessageBox
而不是将所有内容都放在相同的函数中,尤其是在代码花费大量时间的情况下。
您的实际(元)代码:
msgBox->show();
worker code
msgBox->close();
我的建议:
QTimer::singleShot(0, msgBox, SLOT(show));
worker code
QTimer::singleShot(0, msgBox, SLOT(close));
我也建议将工作程序代码移到另一个线程。 这样,它不会影响用户界面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.