我使用这种静态方法打开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设置样式表的正确方法是什么?我通过静态方法?
有没有办法阻止两者从主窗口继承样式表?
答案 0 :(得分:3)
您应该使用选择器,例如QMainWindow {background-color: green}
,其中QMainWindow
是选择器。这样可以防止继承不需要的样式表。
另一个例子 - 自定义消息框:
QMessageBox {background-color: red; color : white}
QMessageBox QPushButton {min-width: 50; min-height: 19}
QMessageBox QLabel {color: white}
您可以将样式表放在.qss
文件中,并在程序开始时全局阅读和应用。