Как изменить цвет кнопки qt c
На этом шаге мы рассмотрим инструменты для решения указанной задачи .
- Active и Normal — компонент активен (окно находится в фокусе ввода);
- Disabled (значение 1) — компонент недоступен;
- Inactive (значение 2) — компонент неактивен (окно находится вне фокуса ввода).
Получить текущую палитру компонента позволяет его метод palette() . Чтобы изменить цвет для какой-либо роли и состояния, следует воспользоваться методом setColor() класса QPalette . Формат метода:
setColor ([Состояние>, ]Роль>, Цвет>)
В параметре < Роль >указывается, для какого элемента изменяется цвет. Например, атрибут Window (или Background ) изменяет цвет фона, a WindowText (или Foreground ) — цвет текста. Полный список атрибутов имеется в документации по классу QPalette (см. https://doc.qt.io/qt-5/qpalette.html ).
В параметре < Цвет >указывается цвет элемента. В качестве значения можно указать атрибут из класса QtCore.Qt (например, black , white и т. д.) или экземпляр класса QColor (например, QColor(«red») , QColor(«#ff0000») , QColor(255, 0, 0) и др.).
После настройки палитры необходимо вызвать метод setPalette() компонента и передать этому методу измененный объект палитры. Следует помнить, что компоненты-потомки по умолчанию имеют прозрачный фон и не перерисовываются автоматически. Чтобы включить перерисовку, необходимо передать значение True методу setAutoFillBackground() окна.
Изменить цвет фона можно также с помощью CSS -атрибута background-соlor . Для этого следует передать таблицу стилей в метод setStyleSheet() компонента. Таблицы стилей могут быть внешними (подключение через командную строку), установленными на уровне приложения (с помощью метода setStyleSheet() класса QApplication ) или установленными на уровне компонента (с помощью метода setStyleSheet() класса QWidget ). Атрибуты, установленные последними, обычно перекрывают значения аналогичных атрибутов, указанных ранее. Если вы занимались Web -программированием, то CSS вам уже знаком, а если нет, то придется дополнительно изучить HTML и CSS .
Создадим окно с надписью. Для активного окна установим зеленый цвет, а для неактивного — красный. Цвет фона надписи сделаем белым. Для изменения фона окна используем палитру, а для изменения цвета фона надписи — CSS -атрибут background-соlor .
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtGui, QtWidgets import sys app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.setWindowTitle("Изменение цвета фона окна") window.resize(300, 100) pal = window.palette() pal.setColor(QtGui.QPalette.Normal, QtGui.QPalette.Window, QtGui.QColor("#008800")) pal.setColor(QtGui.QPalette.Inactive, QtGui.QPalette.Window, QtGui.QColor("#ff0000")) window.setPalette(pal) label = QtWidgets.QLabel("Текст надписи") label.setAlignment(QtCore.Qt.AlignHCenter) label.setStyleSheet("background-color: #ffffff;") label.setAutoFillBackground(True) vbox = QtWidgets.QVBoxLayout() vbox.addWidget(label) window.setLayout(vbox) window.show() sys.exit(app.exec_())
Архив с файлом можно взять здесь.
Результат работы приложения изображен на рисунке 1.
Рис.1. Внешний вид активного (вверху) и неактивного (внизу) окна
На следующем шаге мы рассмотрим вывод изображения в качестве фона .
Как изменить цвет кнопки qt c
Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007
Репутация: нет
Всего: 0
| Код |
| QPalette pal=ui->name_vidget->palette(); pal.setColor(QPalette::param1, QPalette::param2, Qt::green); ui->name_vidget ->setPalette(pal); |
почему цвет виджета не меняется, если:
1. name_vidget=pushButton param1=Active param2=Button
2. name_vidget=label param1= Active param2= Text
3. name_vidget=lineEdit/comboBox param1= Active param2= Base/Text — все работает верно, а чем тогда label хуже (в вар.2 цвет текста у лейбла не меняется)?
Мне надо поменять цвет кнопки…думал, что вар-т 1, а не получается….в чем ошибка и как будет правильно?
Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007
Репутация: нет
Всего: 0
и все-таки — как поменять цвет кнопки? что у меня в коде (см. выше) неверно/не хватает?
Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону
Репутация: 48
Всего: 135
| Код |
| pushBtn->setStyleSheet( » background-color: green; » ); |
вообще сами qt-шники советуют использовать styleSheet
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007
Репутация: нет
Всего: 0
borisbn: спасибо за ответ, но почему в Вашем примере зеленый такой темный? Qt::green гораздо светлее (см. мой вар-т №3 выше). мне светлый нужен (вроде наз-ся Qt::green, а на самом деле салатовый).
и почему все-таки с палитрой (как я хотел выше) не получается?
Это сообщение отредактировал(а) gordmiand — 28.2.2010, 12:16
Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006
Репутация: 81
Всего: 91
Открой дизайнер, выдели label на виджете и в свойствах объекта найди Palette, экспериментируй там.
Национальная группа Russian Federation на QtCentre.
- В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
- Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
- Все начинающие изучать Qt — не забудьте зайти сюда.
- Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
- В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
- Не забывайте пользоваться кнопкой «Код».
- Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
- Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
- Категорически запрещается обсуждение вареза, «кряков», взлома программ и т.д.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
[ Время генерации скрипта: 0.1300 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Как изменить цвет кнопки qt c

Рейтинг (т): 22
Сабж.
Зарание спасибо.
Сообщ. #2 , 02.12.09, 09:19

Рейтинг (т): 44
QWidget::setStylesheet
Сообщ. #3 , 02.12.09, 09:51

Рейтинг (т): 22
В 3 тьем QT такого нету. мне просто нужно изменить цвет нажатой кнопки.
Сообщ. #4 , 02.12.09, 14:52

Рейтинг (т): 22
Нужно переопределить QPushButton::paintEvent, что там у него в нутрях вертиться а?
Добавлено 02.12.09, 15:27
Суть в том что QPushButton::paintEvent Перерисовывает кнопку + задает ей серый цвет. а мне нужен другой.
Сообщ. #5 , 02.12.09, 17:24

Рейтинг (т): 64
Цитата Painkiller @ 02.12.09, 09:51
В 3 тьем QT такого нету
а в чем смысл использовать такую древность? кстати, вчера вышла Qt 4.6
Сообщ. #6 , 02.12.09, 17:31
Unregistered
для не нажатой кнопки background-color:
pushButton->setStyleSheet(QString::fromUtf8(«background-color: rgb(244, 115, 255);»));
для нажатой ничего нет.
Как навсегда изменить цвет кнопки при нажатии в Qt Designer (CSS)?
Суть вопроса в том, что при нажатии она становиться темнее, а после как убираешь курсор цвет возвращается в исходный. Мне нужно сделать чтобы при каждом нажатии на кнопку ее цвет менялся навсегда. Допустим кнопка красная, когда по ней щелкну она станет желтой, если кликну 2 раз, то зеленой. Есть ли такая возможность на CSS?
Заранее благодарен.
- Вопрос задан 03 янв.
- 544 просмотра
Комментировать
Решения вопроса 1
Логику окрашивания кнопки в зависимости от количества кликов вам надо делать в коде.
Ответ написан 03 янв.
Vismutof @Vismutof Автор вопроса
Спасибо, просто думал что можно это сразу же проделать и после в коде не заморачиваться, видимо не вышло.
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Qt
По завершении программы происходит sigsegv?
- 1 подписчик
- вчера
- 19 просмотров

- Qt
- +1 ещё
Почему не очищается QGridLayout?
- 1 подписчик
- 05 дек.
- 23 просмотра