Как создать жирную красную текстовую метку в Qt?
Я хочу написать в своем приложении одну жирную красную линию, используя 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 ответа
Попробуйте использовать форматирование HTML: <b><font... etc </b>
,
Qt Designer делает это так: <span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>
Вы можете использовать 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);
Вы также можете сделать это в одной строке.