我正在使用这个静态方法打开一个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
文件中,并在程序启动时全局读取和应用。
你可以在样式表语法