Стайлинг QPushButton с помощью CSS? - PullRequest
1 голос
/ 11 ноября 2009

Я пытаюсь создать QPushButton, который только что получил значок и константу цвет фона. Так что я могу поменять значок, когда пользователь щелкнет по нему, без каких-либо других видимых эффектов (это для функции свертывания / свертывания). Я добавил такую ​​запись в мою таблицу стилей:

QPushButton.ToggleButton {
    background-color: #8af; 
}

и установите класс кнопки в соответствии, и это действительно дает мне тот вид, который я хочу, за исключением того, что когда я нажимаю на него, цвет фона меняется на светло-голубой, чего я не хочу. Чего мне не хватает?

Edit: я думаю, я должен упомянуть, что я использую Qt 4.5 и PyQt 4.6, чтобы сделать это ...

Ответы [ 4 ]

1 голос
/ 16 ноября 2009

Ответ

Попробуйте присвоить кнопке идентификатор с помощью QObject :: setObjectName, а затем примените стиль с помощью #idSelector?

В Python код, вероятно, будет выглядеть примерно так:

button = QPushButton(self)
button.setObjectName("ToggleButton")

и таблица стилей, как это:

#ToggleButton:pressed {
  background-color: #8af;
}

Дальнейшее чтение

  • Пример приложения QFriendFeed на Forum Nokia активно использует таблицы стилей Qt для настройки пользовательского интерфейса.
1 голос
/ 11 ноября 2009

Я знаю, что людям нравится использовать таблицы стилей, но в этой ситуации я думаю, что так же легко сделать пользовательскую кнопку. Определите класс, который наследуется от QAbstractButton, и переопределите метод paint (). В методе рисования заполните прямоугольник желаемым цветом фона, а затем нарисуйте текущий значок сверху. Это может быть немного сложнее, если вы хотите, чтобы граница вокруг кнопки тоже, но не много.

Кроме того, вы также можете посмотреть на роли для QPalette, в частности QPalette::Light и QPalette::Midlight, которые могут использоваться для регулировки цвета кнопки при нажатии.

0 голосов
/ 13 ноября 2009

откройте таблицу стилей кнопки в Qt designer и попробуйте это:
QPushButton:pressed { image: url(/path/to/your/file/fileName.png); }

0 голосов
/ 11 ноября 2009

Я предполагаю, что делать background-color: #8af !important; было бы слишком очевидно, поэтому я предполагаю, что это не работает. Стоит попробовать, если вы еще этого не сделали.

В противном случае, как отмечено в этом вопросе , существуют определенные состояния, которые вы можете стилизовать. Попробуйте установить тот же цвет фона для нажатого состояния:

QPushButton.ToggleButton:pressed { background-color: #8af; }

Извините, если я неправильно понял. Надеюсь, это поможет.

...