Qt. Изменение цвета кнопки на заданный цвет
Спасибо) а если будет background-color и еще какое-то поле, например: background-color: %1; поле: %2, как задать значения %1 и %2?
14 июн 2022 в 13:51
@Nedaxses .arg(. ).arg(. ), или .arg(v1,v2. ) doc.qt.io/qt-6/qstring.html
14 июн 2022 в 15:13
- c++
- qt
- qt5
- qss
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как изменить цвет кнопки 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 Designer (CSS)?
Суть вопроса в том, что при нажатии она становиться темнее, а после как убираешь курсор цвет возвращается в исходный. Мне нужно сделать чтобы при каждом нажатии на кнопку ее цвет менялся навсегда. Допустим кнопка красная, когда по ней щелкну она станет желтой, если кликну 2 раз, то зеленой. Есть ли такая возможность на CSS?
Заранее благодарен.
- Вопрос задан более года назад
- 565 просмотров
Комментировать
Решения вопроса 1
Логику окрашивания кнопки в зависимости от количества кликов вам надо делать в коде.
Ответ написан более года назад
Vismutof @Vismutof Автор вопроса
Спасибо, просто думал что можно это сразу же проделать и после в коде не заморачиваться, видимо не вышло.
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Visual Studio
- +1 ещё
Почему не работает Qt linguist с диалогами?
- 1 подписчик
- 29 дек. 2023
- 19 просмотров
Как изменить цвет кнопки 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, а не получается….в чем ошибка и как будет правильно?