Перейти к содержимому

Как изменить цвет кнопки qt c

  • автор:

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

  • 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, а не получается….в чем ошибка и как будет правильно?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *