Я думаю, что это потому, что min-width и min-height не указаны.
Согласно documentation:
Если это свойство не задано, то минимальная ширина получается на основе на содержание виджета и стиля.
Одна из возможностей может заключаться в том, чтобы получить размер кнопки перед установкой стиля и установить этот размер при нанесении цвета фона.
I.e. (В данном примере, у нас есть файл пользовательского интерфейса с кнопкой под названием 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);
Я заходящего как мин и максимальную ширину и высоту, потому что reference говорит
Если вы хотите виджет с фиксированной шириной, установите минимальную ширину и максимальную ширину с тем же значением.
Конечно, проще было бы изменить размер кнопки после установки цвета фона. Что-то вроде этого:
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);