QLabel Qt/c++ 文本的渐变色
Gradient color for text of QLabel Qt/c++
我正在尝试为 QLabel 文本设置渐变颜色。我正在尝试使用 setStyleSheet 函数,但它不起作用。我 read this article 但仍然无法得到有效的解决方案。
这是我的代码
void MyClass::setTitle(const QString& text)
{
m_text = text;
m_titleText->setText(text);
QFont font = m_titleText->font();
font.setPointSize(12);
m_titleText->setFont(font);
m_titleText->setStyleSheet("color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, #3d5afe: 0 #66e, stop: 1 #fd3e7f);")
}
这个问题有什么解决办法吗?
提前致谢。
你可以试试这个。
void MyClass::setTitle(const QString& text)
{
m_text = text;
m_titleText->setText(text);
QFont font = m_titleText->font();
font.setPointSize(12);
m_titleText->setFont(font);
QPalette labelPal;
QLinearGradient colorGradient = QLinearGradient(0, 0, m_titleText->width(), 0);
colorGradient.setSpread(QGradient::RepeatSpread);
colorGradient.setColorAt(0, QColor("#3d5afe"));
colorGradient.setColorAt(1, QColor("#fd3e7f"));
QBrush brush(colorGradient);
labelPal.setBrush(QPalette::ColorRole::Text, brush);
m_titleText->setPalette(labelPal);
m_titleText->setForegroundRole(QPalette::Text);
}
ui->label->setStyleSheet(
"* {color: qlineargradient(spread:pad, x1:0 y1:0, x2:1 y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));"
"background: qlineargradient( x1:0 y1:0, x2:1 y2:0, stop:0 cyan, stop:1 blue);}");
您使用的语法无效,但 QSS 解析器无法确定(或者至少不会发出任何警告),因此它会忽略渐变并使用默认调色板文本颜色。
问题是您缺少 stop
定义,而是使用了颜色。
更改为:
m_titleText->setStyleSheet("color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #66e, stop: 1 #fd3e7f);")
请注意,对于 WindowText
角色,使用带有 QLinearGradient(具有对象边界模式)设置为画笔的 QPalette 也可以完成同样的操作。
我正在尝试为 QLabel 文本设置渐变颜色。我正在尝试使用 setStyleSheet 函数,但它不起作用。我 read this article 但仍然无法得到有效的解决方案。
这是我的代码
void MyClass::setTitle(const QString& text)
{
m_text = text;
m_titleText->setText(text);
QFont font = m_titleText->font();
font.setPointSize(12);
m_titleText->setFont(font);
m_titleText->setStyleSheet("color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, #3d5afe: 0 #66e, stop: 1 #fd3e7f);")
}
这个问题有什么解决办法吗? 提前致谢。
你可以试试这个。
void MyClass::setTitle(const QString& text)
{
m_text = text;
m_titleText->setText(text);
QFont font = m_titleText->font();
font.setPointSize(12);
m_titleText->setFont(font);
QPalette labelPal;
QLinearGradient colorGradient = QLinearGradient(0, 0, m_titleText->width(), 0);
colorGradient.setSpread(QGradient::RepeatSpread);
colorGradient.setColorAt(0, QColor("#3d5afe"));
colorGradient.setColorAt(1, QColor("#fd3e7f"));
QBrush brush(colorGradient);
labelPal.setBrush(QPalette::ColorRole::Text, brush);
m_titleText->setPalette(labelPal);
m_titleText->setForegroundRole(QPalette::Text);
}
ui->label->setStyleSheet(
"* {color: qlineargradient(spread:pad, x1:0 y1:0, x2:1 y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));"
"background: qlineargradient( x1:0 y1:0, x2:1 y2:0, stop:0 cyan, stop:1 blue);}");
您使用的语法无效,但 QSS 解析器无法确定(或者至少不会发出任何警告),因此它会忽略渐变并使用默认调色板文本颜色。
问题是您缺少 stop
定义,而是使用了颜色。
更改为:
m_titleText->setStyleSheet("color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #66e, stop: 1 #fd3e7f);")
请注意,对于 WindowText
角色,使用带有 QLinearGradient(具有对象边界模式)设置为画笔的 QPalette 也可以完成同样的操作。