我想修改QPushButtons的背景颜色。问题是使用setStyleSheet("QPushButton { background-color: #00FF00 }");
修改背景颜色,按钮大小也会缩放。
前
后
据我所知,通过更改背景颜色,整个按钮样式表会被覆盖并重置为默认值(How to override just one property:value pair in Qt StyleSheet)。
我的问题是:如何设置按钮的大小,使其与原始大小相同?
我正在使用MacOSX,我尝试了所有高度,最小高度,填充的组合。
答案 0 :(得分:2)
如果只是设置背景颜色,那么使用QPalette是一个选项。
QPushButton button;
QPalette palette = button.palette();
palette.setColor(QPalette::Background, QColor("#00FF00");
button.setPalette(palette);
答案 1 :(得分:1)
我认为这是因为未指定min-width和min-height。
如果未指定此属性,则基于派生最小宽度 关于小部件的内容和风格。
一种可能性是在设置样式之前获取按钮的大小,并在应用背景颜色时设置该大小。
即。 (在此示例中,我们有一个带有按钮pushButton
的UI文件):
QString width ("min-width: " +
QString::number(ui.pushButton->size().width()) +
" px; " +
"max-width: " +
QString::number(ui.pushButton->size().width()) +
" px;");
QString height ("min-height: " +
QString::number(ui.pushButton->size().height()) +
" px; " +
"max-height: " +
QString::number(ui.pushButton->size().height()) +
" px;");
QString style ("#pushButton { " + width + height +
"background-color: black; }");
qApp->setStyleSheet(style);
我设置了最小和最大宽度和高度,因为reference说
如果您想要一个固定宽度的小部件,请设置最小宽度和 max-width到相同的值。
当然,更简单的解决方案可能是在设置背景颜色后调整按钮的大小。像这样:
int width = ui.pushButton->size().width();
int height = ui.pushButton->size().height();
QString style ("#pushButton { background-color: black; }");
qApp->setStyleSheet(style);
ui.pushButton->resize(width, height);