这是一个关于 Qt 库的问题,而不是关于 Web 设计的问题。
对于 QLabel 和其他控件,我可以设置 HTML 文本,例如“
Some Text
”。问题是:默认的HTML样式是在哪里定义的?我如何找出
标签将使用什么字体?
下一个问题:我可以更改默认的 HTML 样式吗?
编辑:我想在代码中的一处指定控件的显示方式。在所有标签中指定 css 样式对我来说似乎不是一个优雅的解决方案。
Edit2:看来人们没有明白这个问题。我会再尝试。假设我执行以下操作:
QLabel* label = ...
label->setText("This <b>is</b> a <h3>Header</h3>");
问题:标签文本渲染将使用什么字体?我怎样才能控制它们?有没有办法指定
标题的默认字体大小?
Edit3:Thomi 建议使用 QTextDocument::setDefaultStyleSheet。但这只是一种解决方法。我必须手动将 css 样式应用到界面中的所有 QTextEdit(而不是 QLabels)。问题是:如何找出默认样式表? QTextDocument::setDefaultStyleSheet 只是为单个 QTextDocument 对象覆盖它。也许 QTextDocument::defaultStyleSheet 返回它?我现在没有安装Qt的电脑,所以无法检查。
QLabel 无法完成您想要的操作。 QLabel 旨在保存原始文本标签 - 它的 HTML 支持相当......绳索。
然而,你can使用 QTextEdit 和 QTextDocument 实现此目的。
尝试这样的事情(我是凭记忆写的,所以它可能无法编译或100%正确):
QTextDocument *doc = new QTextDocument(this);
doc->setDefaultStyleSheet("h3 { font-color: red; }");
QTextEdit *edit = new QTextEdit(this);
edit->setDocument(doc);
edit->setHTML("this is a red <h3>heading</h3>");
重要的是使用 QTextDocument,它允许您更改 HTML 样式表。来自 QT 文档:
The default style sheet is applied to all newly HTML formatted text that is inserted into the document, for example using setHtml() or QTextCursor::insertHtml().
The style sheet needs to be compliant to CSS 2.1 syntax.
Note: Changing the default style sheet does not have any effect to the existing content of the document.
请参阅此处了解更多信息
Edit:
要获取默认样式表,您可以调用QTextDocument::DefaultStyleSheet()
- 但是,这仅适用于 QTextDocuments,并且可能适用于也可能不适用于所有 Qt 控件(包括 QLabel)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)