Как мне установить цвет текста и фона QLabel
?
180
Лучший и рекомендуемый способ - использовать Qt Style Sheet .
Чтобы изменить цвет текста и цвет фона QLabel
, вот что я хотел бы сделать:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Вы также можете отказаться от использования таблиц стилей Qt и изменить QPalette
цвет вашегоQLabel
, но вы можете получить разные результаты на разных платформах и / или стилях.
Как указано в документации Qt:
Использование QPalette не гарантирует работу для всех стилей, поскольку авторы стилей ограничены рекомендациями различных платформ и собственным механизмом тем.
Но вы могли бы сделать что-то вроде этого:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
Но, как я уже сказал, я настоятельно рекомендую не использовать палитру и перейти к Qt Style Sheet.
color
Атрибут неэффективен. Только через HTML<font color="#FFFFFF">...</font>
я смог установить цвет шрифта (в данном случае, белый.color: ;
в качестве «перезагрузки», кажется, делает это, но это хорошая практика, или есть лучший метод?Вы можете использовать QPalette, однако вы должны
setAutoFillBackground(true);
включить цвет фонаОн отлично работает на Windows и Ubuntu, я не играл ни с какой другой ОС.
Примечание: пожалуйста, смотрите QPalette , раздел роли цвета для более подробной информации.
источник
Я добавляю этот ответ, потому что думаю, что он может быть полезен для всех.
Я вступаю в проблему установки цветов RGBA (то есть цвета RGB со значением альфа- канала для прозрачности) для цветных меток отображения в моем приложении для рисования.
Когда я наткнулся на первый ответ, я не смог установить цвет RGBA. Я также пробовал такие вещи, как:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
где
color
цвет RGBA.Итак, мое грязное решение состояло в том, чтобы расширить
QLabel
и переопределитьpaintEvent()
метод, заполняющий его ограничивающий прямоугольник.Сегодня я открыл
qt-assistant
и прочел список свойств ссылок на стили . К счастью, у него есть пример, который гласит следующее:QLineEdit { background-color: rgb(255, 0, 0) }
Это поможет мне сделать что-то вроде приведенного ниже кода, например:
Обратите внимание, что
setAutoFillBackground()
установка вFalse
не будет работать.С Уважением,
источник
ЕДИНСТВЕННАЯ вещь, которая работала для меня, была HTML.
И я обнаружил, что это гораздо проще, чем любой из программных подходов.
Следующий код изменяет цвет текста на основе параметра, переданного вызывающей стороной.
источник
<font/>
тега (и это что-то более знакомое людям HTML: D), а не просто цвет, поэтому он дает вам большую гибкость.Лучший способ установить любую функцию относительно цветов любого виджета - это использовать QPalette .
И самый простой способ найти то, что вы ищете, это открыть Qt Designer, установить палитру QLabel и проверить сгенерированный код.
источник
Этот работает отлично
getColor()
Метод возвращает выбранный цвет. Вы можете изменить цвет этикетки, используяstylesheet
источник