Jér*_*ôme 251
最好的和推荐的方法是使用Qt样式表.
要更改a的文本颜色和背景颜色,QLabel我会这样做:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Run Code Online (Sandbox Code Playgroud)
您也可以避免使用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);
Run Code Online (Sandbox Code Playgroud)
但正如我所说,我强烈建议不要使用调色板并选择Qt样式表.
小智 33
您可以使用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");
Run Code Online (Sandbox Code Playgroud)
它在Windows和Ubuntu上工作正常,我没有玩过任何其他操作系统.
注意:有关详细信息,请参阅QPalette,颜色角色部分
Seb*_*ian 17
我添加这个答案是因为我觉得它对任何人都有用.
我在绘画应用程序中为彩色显示标签设置RGBA颜色(即RGB颜色,透明度为Alpha值)的问题.
当我遇到第一个答案时,我无法设置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+"); }")
Run Code Online (Sandbox Code Playgroud)
请注意,setAutoFillBackground()设置False不会使其工作.
问候,
小智 14
对我有用的唯一的事情是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);
}
Run Code Online (Sandbox Code Playgroud)
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; }");
Run Code Online (Sandbox Code Playgroud)
getColor()方法返回选定的颜色。您可以使用更改标签颜色stylesheet
| 归档时间: |
|
| 查看次数: |
303657 次 |
| 最近记录: |