我正在OSX Mavericks上编写新手Qt5代码,并希望覆盖给定窗口小部件的StyleSheet中的一个属性:值对。
如果我运行以下自包含演示代码:
#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw = new QMainWindow();
QPushButton* AButton = new QPushButton( "A Button", mw );
mw->show();
return app.exec();
}
我使用Macintosh风格的默认值获得了一个漂亮的按钮--圆角、按下时标准的OSX蓝色等:
然而,如果我将样式表设置为使背景按钮颜色变为红色,似乎我在这个过程中失去了所有其他OSX样式的默认值--没有了圆角、标准边距等:
#include <QApplication>
#include <QMainWindow>
#include <QtGui>
#include <QPushButton>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw = new QMainWindow();
QPushButton* AButton = new QPushButton( "A Button", mw );
AButton->setStyleSheet("QPushButton { background-color: red; }");
mw->show();
return app.exec();
}
这是结果:
我如何仅覆盖一个属性:value对,同时保留小部件的所有其他样式元素,例如在上面的示例中将背景颜色设置为红色,但保持所有边框圆角,边距等不变?
非常感谢
AButton->setStyleSheet(AButton->styleSheet() + "...");
将新样式添加到现有样式中。 - leemesAButton->setStyleSheet( AButton->styleSheet() + "QPushButton { background-color: red; }");
) - lcikglQWidget::setPalette()
和palette()
,然后尝试为一些角色设置颜色(试试哪个用于按钮背景,我记不清了)。这将被样式引擎考虑进去。 - leemesQMacStyle
忽略了QPalette::Button
颜色来设置背景,但是你仍然可以使用QPalette::Text
来设置文本颜色。 - Linville