2015-08-29 4 views
4

Я хочу изменить фоновый цвет QPushButtons. Проблема в том, что изменение цвета фона с помощью setStyleSheet("QPushButton { background-color: #00FF00 }");, размер кнопки также масштабируется.QPushButton изменить размер после смены цвета

перед тем

enter image description here

после

enter image description here

Я понимаю, что, изменяя цвет фона, весь лист стиль кнопки перезаписывается и сбрасывается в какой-то по умолчанию (How to override just one property:value pair in Qt StyleSheet).

Мой вопрос: как я могу установить размер кнопки так, чтобы он был того же размера, что и оригинал?

Я использую MacOSX, и я пробовал все комбинации высоты, минимальной высоты, отступов.

ответ

1

Я думаю, что это потому, что 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); 
2

Если речь идет только об установке цвета фона, то использование QPalette будет вариантом.

QPushButton button; 
QPalette palette = button.palette(); 
palette.setColor(QPalette::Background, QColor("#00FF00"); 
button.setPalette(palette); 
Смежные вопросы