gpt4 book ai didi

qt - 使用来自全局 QSS 的类选择器设置文本区域的样式

转载 作者:行者123 更新时间:2023-12-04 12:32:32 28 4
gpt4 key购买 nike

如何设置作为小部件文本一部分的跨度的样式(例如
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

Unsatisfactory result

我真的很感激能像我一样避免对样式进行硬编码的解决方案
与 foo 跨度。
目标是使应用程序外观完全由
用户提供的样式表(在示例中由 css 表示)。
目前我使用的解决方法涉及每个元素的单独标签
那是彩色的,维护起来简直是一场噩梦。

我咨询了一些在线资源以及布兰切特/萨默菲尔德章节
19 但那些主要与样式整个小部件有关。

最佳答案

如果您在 QLabel 之后不需要更改样式加载,您可以设计一个系统,您可以在其中文本替换集中样式文件中每个单词所需的颜色:

// These values come from a central, user-supplied style sheet, etc.
QString primary = "red";
QString secondary = "green";

some_label label("before "
"<font color=\"" + secondary + "\">foo</font> "
"<font color=\"" + primary + "\">bar</font> "
"after");

这个系统有点难以阅读,但它可能比使用许多 QLabel 有所改进。 s。

(您可能已经注意到, Qt doesn't support CSS selection of classes within QLabels 。)

关于qt - 使用来自全局 QSS 的类选择器设置文本区域的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com