QLabel:设置文字和背景的颜色
如何设置QLabel
的文本和背景的颜色?
最好的和推荐的方法是使用Qt样式表 。
要更改QLabel
的文本颜色和背景颜色,请执行以下操作:
QLabel* pLabel = new QLabel; pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
您也可以避免使用Qt样式表并更改QLabel
的QPalette
颜色,但是您可能会在不同的平台和/或样式上获得不同的结果。
正如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);
但正如我所说,我强烈build议不要使用调色板,并去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 ,颜色angular色部分了解更多详情
我添加这个答案是因为我认为这对任何人都有用。
我在我的绘画应用程序中为彩色显示标签设置了RGBA颜色(即透明度为Alpha值的RGB颜色)的问题。
当我遇到第一个答案时,我无法设置RGBA颜色。 我也尝试过这样的事情:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
其中color
是RGBA颜色。
所以,我的肮脏的解决scheme是扩展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+"); }")
请注意,设置为False
setAutoFillBackground()
不会使其工作。
问候,
设置任何有关小部件颜色的function的最好方法是使用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
更改标签颜色