QProgressDialog/QMessageBox似乎从我的主窗口继承样式表



我正在使用这个静态方法打开一个QMessageBox:

reply = QMessageBox::question(this, "Save changes", "Save all modified files before exit?", QMessageBox::Yes|QMessageBox::No);

我后来也打开了一个QProgressDialog使用这个:

QProgressDialog progress("Saving metadata to files...", "Abort", 0, queue.length()-1, this);

然而,两者似乎都继承了我主窗口的深色(#333)。但是文字是黑色的,所以它是不可见的。

我试着添加:

progress.setStyleSheet("color:#eee; background-color:#3a3a3a;");

但是窗口看起来不太好,因为它看起来没有边界,等等。

设置QProgressDialog和QMessageBox样式表的正确方法是什么,我正在通过静态方法获得?

是否有一种方法来阻止从主窗口继承样式表?

您应该使用选择器,例如QMainWindow {background-color: green},其中QMainWindow是选择器。这将防止继承不需要的样式表。

另一个例子-自定义消息框:

QMessageBox {background-color: red; color : white}
  QMessageBox QPushButton {min-width: 50; min-height: 19}
  QMessageBox QLabel {color: white}

您可以将您的样式表放在.qss文件中,并在程序启动时全局读取和应用。

你可以在样式表语法

中阅读更多关于使用样式表的内容

最新更新