Ответ 1
Попробуйте использовать форматирование HTML: <b><font... etc </b>
.
Конструктор Qt делает это следующим образом: <span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>
Я хочу написать одиночную выделенную красную строку в моем приложении с помощью 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 отображает всю строку со всеми фигурными скобками, ключевыми словами и обратными косыми чертами вместо "это полужирный красный текст". Что я делаю неправильно?
Благодарим вас за помощь.
Попробуйте использовать форматирование HTML: <b><font... etc </b>
.
Конструктор Qt делает это следующим образом: <span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>
Qt использует простой подмножество HTML для форматирования.
Вы можете использовать Qt StyleSheets и установить свойство styleSheet
QLabel
warning->setStyleSheet("font-weight: bold; color: red");
Qt поддерживает большинство стилей CSS на своих QWidget
-распадаемых классах. Для этого вам не нужно устанавливать текстовый формат Qt::RichText
.
Вы также можете сделать это программно, используя функцию 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);
Вы можете сделать это и в одной строке.