如何通过全局样式表设置作为小部件文本(例如 QLabel)一部分的跨度?
例如在下面的例子中,foo和bar都应该是红色的。
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
class
some_label : public QLabel
{
Q_OBJECT
public:
some_label(QString text = "") : QLabel(NULL) {
setText(text);
show();
};
};
#include "main.moc"
static const char *css =
"some_label { color : blue; background : black; }"
"span.some_class { color : red; }";
int
main(int argc, char **argv)
{
QApplication a(argc, argv);
a.setStyleSheet(css);
some_label label("before "
"<span style=\"color:red;\">foo</span> " /* works */
"<span class=\"some_class\">bar</span> " /* fails */
"after");
return a.exec();
}
Qmake (Qt 5.1.1) 项目文件:
QT += widgets
SOURCES += main.cpp
我真的很感激一个解决方案,它可以避免像我对foo跨度所做的那样对样式进行硬编码。目标是让应用程序的外观完全由用户提供的样式表(css
在示例中由 表示)决定。目前,我使用一种解决方法,为每个有色元素使用单独的标签,维护起来简直是一场噩梦。
我已经查阅了一些在线资源以及 Blanchette/Summerfield 第 19 章,但它们主要关注的是整个小部件的样式。