[英]Gradient color for text of QLabel Qt/c++
我试图为 QLabel 文本设置渐变颜色。 我正在尝试使用 setStyleSheet function 但它不起作用。 我阅读了这篇文章,但仍然无法获得有效的解决方案。
这是我的代码
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);
}
您使用了无效的语法,但 QSS 解析器无法确定(或者,至少,没有给出任何警告),所以它只是忽略渐变并使用默认的调色板颜色作为文本。
问题是您缺少stop
定义并改用颜色。
改成:
m_titleText->setStyleSheet("color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #66e, stop: 1 #fd3e7f);")
请注意,同样可以使用带有 QLinearGradient(使用 object 边界模式)设置为WindowText
角色的画笔的 QPalette 来完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.