テキストを表示するQTextEdit
ボックスがあり、同じボックス内のさまざまなテキスト行にテキストの色を設定できるようにしたいと考えていQTextEdit
ます。(つまり、ライン 1 は赤、ライン 2 は黒など)
QTextEdit
これはボックスで可能ですか?そうでない場合、この動作を取得する最も簡単な方法は何ですか?
ありがとう。
簡単な追加: プログラムでテキスト ボックスに入力する場合、自分で html を生成する代わりに、textEdit->setTextColor(QColor&)
. QColor オブジェクトを自分で作成するか、Qt 名前空間 (Qt::black、Qt::red など) で定義済みの色のいずれかを使用できます。別の色で再度呼び出されるまで、追加したテキストに指定された色が適用されます。
私のために働いた唯一のものはhtmlでした。
コード スニペットは次のとおりです。
QString line = "contains some text from somewhere ..."
:
:
QTextCursor cursor = ui->messages->textCursor();
QString alertHtml = "<font color=\"DeepPink\">";
QString notifyHtml = "<font color=\"Lime\">";
QString infoHtml = "<font color=\"Aqua\">";
QString endHtml = "</font><br>";
switch(level)
{
case msg_alert: line = alertHtml % line; break;
case msg_notify: line = notifyHtml % line; break;
case msg_info: line = infoHtml % line; break;
default: line = infoHtml % line; break;
}
line = line % endHtml;
ui->messages->insertHtml(line);
cursor.movePosition(QTextCursor::End);
ui->messages->setTextCursor(cursor);
HTML 形式のテキストを使用します。たとえば、次のようになります。
textEdit->setHtml(text);
ここで、textは HTML 形式のテキストで、色付きの線などが含まれています。
いくつかの引用:
QTextEdit は、HTML スタイルのタグを使用したリッチ テキストの書式設定をサポートする高度な WYSIWYG ビューアー/エディターです。大きなドキュメントを処理し、ユーザー入力に迅速に応答するように最適化されています。
.
テキスト編集では、プレーン テキストと HTML ファイル (HTML 3.2 および 4 のサブセット) の両方を読み込むことができます。
.
QTextEdit は、表や画像を含む大きな HTML サブセットを表示できます。
これは、ほとんどのタグが非推奨であることを意味し、現在の CSS が含まれていないため、次のようになりました。
// save
int fw = ui->textEdit->fontWeight();
QColor tc = ui->textEdit->textColor();
// append
ui->textEdit->setFontWeight( QFont::DemiBold );
ui->textEdit->setTextColor( QColor( "red" ) );
ui->textEdit->append( entry );
// restore
ui->textEdit->setFontWeight( fw );
ui->textEdit->setTextColor( tc );