43

我想使用 Qt 在我的应用程序中编写一条粗体红线。

据我了解,我会创建一个 QLabel,将其 textFormat 设置为富文本并给它一个富文本字符串来显示:

QLabel *warning = new QLabel;
warning->setTextFormat(Qt::RichText);
warning->setText("{\\rtf1\\ansi\\ansicpg1252 {\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;} {\\colortbl;\\red255\\green0\\blue0;} \\f0 \\cf0 this is bold red text}");

我在富文本编辑器中测试了这个富文本字符串,它显示得很好。

但是 Qt 显示带有所有大括号、关键字和反斜杠的整个字符串,而不是“这是粗体红色文本”。我究竟做错了什么?

感谢您的帮助。

4

4 回答 4

66

尝试使用 HTML 格式:<b><font... etc </b>.

Qt Designer 是这样做的:<span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>

于 2009-09-23T08:03:34.607 回答
39

您可以使用Qt StyleSheetsstyleSheet设置QLabel

warning->setStyleSheet("font-weight: bold; color: red");

QWidgetQt 在其派生类上支持大多数 CSS 样式。您无需将文本格式设置Qt::RichText为即可。

于 2016-03-22T15:38:08.613 回答
13

Qt 使用一个简单的HTML 子集进行格式化。

于 2009-09-23T08:05:29.313 回答
2

您也可以使用该settext函数以编程方式执行此操作。像这样的东西:

QString labelText = "<P><b><i><font color='#ff0000' font_size=4>";
labelText .append("Text what u want to display");
labelText .append("</font></i></b></P></br>");
QLabel label->setText(labelText);

您也可以在一行中完成。

于 2012-08-31T08:27:50.700 回答