web-dev-qa-db-ja.com

QTextEditとQPlainTextEdit

QTextEditQPlainTextEditの違いは何ですか、なぜ一方を使用するのですか?

Qt5を学ぶための練習としてテキストエディターをコーディングしていますが、今はQTextEditQPlainTextEditのどちらを使用するのか疑問に思っています。これまでのところ、QTextEditで画像を表示できることしかわかりませんでしたが、それ以外は私と同じように見えます。私のテキストエディターはいくつかの基本的な構文の強調表示(おそらくtextChanged()信号を使用)をサポートする必要がありますが、それは要件に関する限りです。

Googleが"QTextEdit vs QPlainTextEdit"および"QPlainTextEditと比較したQTextEdit"を検索すると、2つのクラスを比較する適切な結果は得られませんでした。

39
Markus Meskanen

Qtのドキュメント から:

QPlainTextEditは、プレーンテキストをサポートする高度なビューア/エディタです。大きなドキュメントを処理し、ユーザー入力にすばやく応答するように最適化されています。

QPlainTextはQTextEditとほぼ同じテクノロジーと概念を使用しますが、プレーンテキスト処理用に最適化されています。

QPlainTextEditは、段落と文字で機能します。段落は、ウィジェットの幅に収まるようにワードラップされた書式設定された文字列です。デフォルトでは、プレーンテキストを読むとき、1つの改行は段落を意味します。ドキュメントは、ゼロ個以上の段落で構成されます。段落は、改行で区切られています。段落内の各文字には、フォントや色などの独自の属性があります。

そして後で:

QTextEditとの違い

QPlainTextEditは、QTextEditおよびQTextDocumentの背後にあるテクノロジーのほとんどを使用して実装されるシンクラスです。 QTextEditに対するパフォーマンス上の利点は、主にテキストドキュメントでQPlainTextDocumentLayoutと呼ばれる異なる単純化されたテキストレイアウトを使用することにあります(QTextDocument::setDocumentLayout()を参照)。プレーンテキストドキュメントレイアウトは、テーブルも埋め込みフレームもサポートせず、ピクセル単位の正確な高さ計算を、行ごとの段落ごとのスクロールアプローチに置き換えます。これにより、非常に大きなドキュメントを処理し、行の折り返しをリアルタイムで有効にしてエディターのサイズを変更できます。また、高速ログビューアにもなります(setMaximumBlockCount()を参照)。

違いは、QPlainTextEditはプレーンテキストの処理用に最適化されており、非常に大きなプレーンテキストファイルでも使用できることです。また、テキストの書式設定方法も簡単です。

プレーンテキストのみをサポートする場合は、QPlainTextEditが正しい選択です。

37
Bakuriu