繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM