改变颜色后QPushButton调整大小

时间:2015-08-29 21:24:36

标签: c++ css qt

我想修改QPushButtons的背景颜色。问题是使用setStyleSheet("QPushButton { background-color: #00FF00 }");修改背景颜色,按钮大小也会缩放。

enter image description here

enter image description here

据我所知,通过更改背景颜色,整个按钮样式表会被覆盖并重置为默认值(How to override just one property:value pair in Qt StyleSheet)。

我的问题是:如何设置按钮的大小,使其与原始大小相同?

我正在使用MacOSX,我尝试了所有高度,最小高度,填充的组合。

2 个答案:

答案 0 :(得分:2)

如果只是设置背景颜色,那么使用QPalette是一个选项。

QPushButton button;
QPalette palette = button.palette();
palette.setColor(QPalette::Background, QColor("#00FF00");
button.setPalette(palette);

答案 1 :(得分:1)

我认为这是因为未指定min-widthmin-height

根据documentation

  

如果未指定此属性,则基于派生最小宽度   关于小部件的内容和风格。

一种可能性是在设置样式之前获取按钮的大小,并在应用背景颜色时设置该大小。

即。 (在此示例中,我们有一个带有按钮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);
相关问题