我有QLabel
的Qt样式表设置了深色背景:
QLabel {
background: black;
color: white;
}
在我使用嵌入式网址添加文字并将Qt::TextFormat
设置为Qt::RichText
之前,此方法正常。链接显示为默认深蓝色,在深色背景上难以阅读。
我尝试通过样式表进行自定义,例如:
a { color: white; }
QLabel!visited { color: white; }
但这没有任何效果。似乎有用的一件事是改变应用程序的QPalette
:
QPalette newPal(qApp->palette());
newPal.setColor(QPalette::Link, Qt::white);
newPal.setColor(QPalette::LinkVisited, Qt::white);
qApp->setPalette(newPal);
然而,这需要对颜色进行硬编码。我有什么方法可以从样式表中设置颜色吗?
编辑:
我发现了自定义调色板的另一个问题。如果我只想修改我的小部件的调色板(在上面的示例中用widget
代替qApp
),那么这不起作用。我不想影响应用程序中的所有其他QLabels
,那么如何将调色板更改限制为此小部件?
答案 0 :(得分:5)
我在显式设置QPalette
方面没什么成功 - 如果你为整个应用程序设置它,它就有效,但如果你在小部件中设置它,则不行。最后,对于我需要做的最简单的事情是使用QTextBrowser而不是支持subset HTML。然后我可以使用常规的CSS样式表覆盖链接的颜色:
QTextBrowser browser;
// IMPORTANT! - set the stylesheet before the content
browser->document()->setDefaultStyleSheet("a {color: white; }");
browser->setText(html);
答案 1 :(得分:5)
一种方法是将style="color: whatever"
或类添加到链接的内部<span>
。我还没想出如何将它应用到整个应用程序中,但这是一个好的开始。
答案 2 :(得分:2)
简短的回答是否定的。最近我不得不这样做。
QLabel!visited
不起作用,因为Qt不会跟踪是否访问过QLabel。QLabel { color: ... }
不适用于链接。无法找到原因,但我发现的只是在这种情况下使用QPallete
的建议。答案 3 :(得分:0)
您可以将HTML中的颜色标签设置为
{ color: inherit; }