QPushButton更改颜色后调整大小

4
我想修改QPushButtons的背景颜色。问题是,使用setStyleSheet("QPushButton { background-color: #00FF00 }");来修改背景颜色时,按钮的大小也会发生变化。
修改前: enter image description here 修改后: enter image description here 我知道通过更改背景颜色,整个按钮样式表都会被覆盖并重置为默认值(参见:如何在Qt StyleSheet中仅覆盖一个属性:值对)。
我的问题是:如何设置按钮的大小,使其与原始大小相同?
我正在使用MacOSX,并尝试了所有高度、最小高度和填充的组合。
2个回答

2

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

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

1
我认为这是因为min-widthmin-height 没有被指定。
根据文档
如果没有指定此属性,则最小宽度是基于部件内容和样式来推导的。
其中一种可能是在设置样式之前获取按钮的大小,并在应用背景颜色时设置该大小。
例如(在此示例中,我们有一个名为 pushButton 的推按钮的用户界面文件):
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);

我同时设置最小和最大宽度和高度,因为引用中提到:

如果您想要一个具有固定宽度的小部件,请将最小宽度和最大宽度设置为相同的值。

当然,在设置背景颜色后调整按钮大小可能是一种更简单的解决方案。像这样:

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接