Как я могу стилизовать диапазон, который является частью текста виджета (например, 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
). На данный момент я использую обходной путь, включающий отдельные метки для каждого окрашенного элемента, и это кошмар для поддержания.
Я проконсультировался с несколькими онлайн-источниками, а также с главой 19 Бланшетт/Саммерфилд, но они в основном связаны со стилем целых виджетов.