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; }");