QLabel:设置文本和背景的颜色

时间:2010-05-01 11:57:30

标签: qt qt4 qlabel

如何设置QLabel的文字和背景颜色?

6 个答案:

答案 0 :(得分:235)

最佳和推荐的方法是使用Qt Style Sheet

要更改QLabel的文字颜色和背景颜色,我会这样做:

QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");

您还可以避免使用Qt样式表并更改QPalette的{​​{1}}颜色,但在不同的平台和/或样式上可能会得到不同的结果。

正如Qt文件所述:

  

不能保证使用QPalette适用于所有样式,因为样式作者受到不同平台指南和本机主题引擎的限制。

但你可以这样做:

QLabel

但正如我所说,我强烈建议不要使用调色板并选择Qt样式表。

答案 1 :(得分:30)

您可以使用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颜色角色部分

答案 2 :(得分:16)

我添加这个答案,因为我觉得它对任何人都有用。

我在绘画应用程序中为彩色显示标签设置了RGBA颜色(即RGB颜色,透明度为Alpha值)的问题。

当我看到第一个答案时,我无法设置RGBA颜色。我也尝试过这样的事情:

myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())

其中color是RGBA颜色。

所以,我的脏解决方案是扩展QLabel并覆盖填充其边界矩形的paintEvent()方法。

今天,我打开qt-assistant并阅读style reference properties list。幸运的是,它有一个例子说明如下:

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无效。

此致

答案 3 :(得分:13)

对我来说唯一有用的东西是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);
}

答案 4 :(得分:12)

设置任何小部件颜色的任何功能的最佳方法是使用QPalette

找到所需内容的最简单方法是打开Qt Designer并设置QLabel的调色板并检查生成的代码。

答案 5 :(得分:3)

这个是完美的

gem install rails

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()

更改标签颜色