![](/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.