簡體   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