6 ответов:
лучший и рекомендуемый способ-использовать Таблица Стилей Qt.
изменить цвет текста и цвет фона
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.
Вы можете использовать QPalette, однако вы должны установить
setAutoFillBackground(true);чтобы включить цвет фонаQPalette sample_palette; sample_palette.setColor(QPalette::Window, Qt::white); sample_palette.setColor(QPalette::WindowText, Qt::blue); sample_label->setAutoFillBackground(true); sample_label->setPalette(sample_palette); sample_label->setText("What ever text");Он отлично работает на 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) }это открывает мой ум, делая что-то вроде кода ниже, в качестве примера:
myLabel= QLabel() myLabel.setAutoFillBackground(True) # This is important!! color = QtGui.QColor(233, 10, 150) alpha = 140 values = "{r}, {g}, {b}, {a}".format(r = color.red(), g = color.green(), b = color.blue(), a = alpha ) myLabel.setStyleSheet("QLabel { background-color: rgba("+values+"); }")отметим, что
setAutoFillBackground()установить вFalseне будет делать это работа.С уважением,
лучший способ установить любую функцию относительно цветов любого виджета, чтобы использовать QPalette.
и самый простой способ найти то, что вы ищете, это открыть Qt Designer и установить палитру QLabel и проверить сгенерированный код.
единственное, что работало для меня было html.
и я обнаружил, что это гораздо проще сделать, чем любой из программных подходов.
следующий код изменяет цвет текста на основе параметров, передаваемых абонентом.
enum {msg_info, msg_notify, msg_alert}; : : void bits::sendMessage(QString& line, int level) { QTextCursor cursor = ui->messages->textCursor(); QString alertHtml = "<font color=\"DeepPink\">"; QString notifyHtml = "<font color=\"Lime\">"; QString infoHtml = "<font color=\"Aqua\">"; QString endHtml = "</font><br>"; switch(level) { case msg_alert: line = alertHtml % line; break; case msg_notify: line = notifyHtml % line; break; case msg_info: line = infoHtml % line; break; default: line = infoHtml % line; break; } line = line % endHtml; ui->messages->insertHtml(line); cursor.movePosition(QTextCursor::End); ui->messages->setTextCursor(cursor); }
этот работает идеально
QColorDialog *dialog = new QColorDialog(this); QColor color= dialog->getColor(); QVariant variant= color; QString colcode = variant.toString(); ui->label->setStyleSheet("QLabel { background-color :"+colcode+" ; color : blue; }");
getColor()метод возвращает выбранный цвет. Вы можете изменить цвет этикетки с помощьюstylesheet
Comments