我想用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显示整个字符串,包括所有大括号,关键字和反斜杠,而不是“这是大胆的红色文本”。我做错了什么?
感谢您的帮助。
答案 0 :(得分:59)
尝试使用HTML格式:<b><font... etc </b>
。
Qt Designer是这样的:<span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>
答案 1 :(得分:18)
您可以使用Qt StyleSheets并设置styleSheet
的{{1}}属性
QLabel
Qt支持其warning->setStyleSheet("font-weight: bold; color: red");
派生类的大多数CSS样式。您无需将文本格式设置为QWidget
即可生效。
答案 2 :(得分:13)
Qt使用简单的HTML subset进行格式化。
答案 3 :(得分:3)
您也可以使用settext
功能以编程方式执行此操作。像这样:
QString labelText = "<P><b><i><FONT COLOR='#ff0000' FONT SIZE = 4>";
labelText .append(Text what u want to display);
labelText .append("</i></b></P></br>");
QLabel label->setText(labelText);
您也可以在一行中完成。