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

Qt QLabel:设置文本和背景的颜色,qt,qt4,qlabel,Qt,Qt4,Qlabel,如何设置QLabel的文本和背景颜色?设置任何小部件颜色相关功能的最佳方法是使用 找到所需内容的最简单方法是打开Qt Designer,设置QLabel的调色板并检查生成的代码。最好的推荐方法是使用 要更改QLabel的文本颜色和背景色,我将执行以下操作: QLabel* pLabel = new QLabel; pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }"); 您还可以避免使用Qt样式表

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

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


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

最好的推荐方法是使用

要更改
QLabel
的文本颜色和背景色,我将执行以下操作:

QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
您还可以避免使用Qt样式表,并更改
QLabel
qpalete
颜色,但在不同的平台和/或样式上可能会得到不同的结果

正如Qt文件所述:

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

但你可以这样做:

 QPalette palette = ui->pLabel->palette();
 palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
 palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
 ui->pLabel->setPalette(palette);

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

我添加这个答案是因为我认为它对任何人都有用

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

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

myLabel.setStyleSheet(“QLabel{background color:%s”%color.name())

其中,
color
是RGBA颜色

因此,我的肮脏解决方案是扩展
QLabel
并重写
paintEvent()
方法填充其边界矩形

今天,我打开了
qt助手
并阅读了。令人惊讶的是,它有一个示例说明了以下内容:

QLineEdit{背景色:rgb(255,0,0)}

这就打开了我的思路,例如,执行下面的代码:

myLabel=QLabel()
myLabel.setAutoFillBackground(True)#这很重要!!
颜色=QtGui.QColor(233,10150)
α=140
values=“{r},{g},{b},{a}”。格式(r=color.red(),
g=color.green(),
b=颜色。蓝色(),
a=α
)
setStyleSheet(“QLabel{背景色:rgba(“+values+”);}”)
请注意,
setAutoFillBackground()
False
中设置不会使其工作


就我而言,

唯一适合我的就是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);
}
enum{msg_info,msg_notify,msg_alert};
:
:
无效位::sendMessage(QString&line,int级别)
{
QTextCursor=ui->messages->textCursor();
QString alertHtml=“”;
QString notifyHtml=“”;
QString infoHtml=“”;
QString endHtml=“
”; 开关(电平) { case msg_alert:line=alertHtml%line;中断; case msg_notify:line=notifyHtml%line;中断; case msg_info:line=infoHtml%line;中断; 默认值:line=infoHtml%line;中断; } 行=行%endHtml; 用户界面->消息->插入TML(行); cursor.movePosition(QTextCursor::End); 用户界面->消息->设置光标(光标); }
您可以使用QPalette,但是必须设置
设置自动填充背景(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上运行良好,我没有使用过任何其他操作系统

注意:有关更多详细信息,请参见“颜色角色”部分
getColor()
方法返回选定的颜色。
您可以使用样式表更改标签颜色。在designer中,单击“表单->查看代码”查看生成的代码。我一直在使用setStyleSheet()方法,至少在Qt 4.4中,它最终调用了connect和样式表中的东西,导致内存使用量增加。我打开了一个关于内存使用量增加的错误报告,可以找到。属性
color
无效。只有通过HTML
我才能设置字体颜色(本例中为白色。是否有方法指定默认值(文本)用户桌面的颜色?使用
color:;
作为“重置”似乎可以做到这一点,但这是一种良好的做法,还是有更好的方法?虽然代码很受欢迎,但它应该总是有一个附带的解释。这不必太长,但是意料之中的。虽然此代码有效,但有一些定义优化
QColor color=QColorDialog::getColor(QColor(Qt::white),this,tr(“选择颜色”);//使用静态函数选择颜色,初始值为白色;//color.name在这里返回一个#RRGGBB格式的字符串
相同,Qpalete和样式表对我都不起作用,非常烦人!我更喜欢这种方式,因为它还允许您在
标记中放入一些其他奇特的东西(对于HTML用户来说,这是更熟悉的:D)而且不仅仅是颜色,因此它给了您更大的灵活性。@我不知道任何样式表都是通过Qpalete工作的……所有东西都使用Qpalete。这是任何方法中最重要的单一元素(样式表除外)感谢您指出自动填充背景是这里的一个关键问题。如果没有该设置,上述公认的答案将不起作用。
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; }");