web-dev-qa-db-ja.com

Qtで太字の赤いテキストラベルを作成する方法は?

Qtを使用して、アプリケーションに太字の赤い線を1つ書きたいです。

私の知る限り、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は「this is bold red text」ではなく、すべての中括弧、キーワード、およびバックスラッシュを含む文字列全体を表示します。私は何を間違えていますか?

ご協力ありがとうございました。

35
bastibe

HTML形式を使用してみてください:<b><font... etc </b>

Qt Designerはこのようにします:<span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>

59
rpg

Qt StyleSheets を使用して、styleSheetQLabelプロパティを設定できます。

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

Qtは、QWidget派生クラスでほとんどのCSSスタイルをサポートしています。これが機能するために、テキスト形式をQt::RichTextに設定する必要はありません。

19
code-tinkerer

Qtは、フォーマットに単純な HTMLサブセット を使用します。

13
gnud

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);

1行で行うこともできます。

3
Ramya B