コード領域のように動作するテキスト オブジェクト タイプ ( QTextObjectInterfaceを継承) を作成することに興味があります。
- 特徴的な背景
- 国境
- 等幅フォント
- 編集可能なコンテンツ
- インスタンス内のコンテンツを抽出できるように、インスタンスをコードで識別できるようにする必要があります (周囲のコンテンツからコードを分離する)。
- 保存/読み込み (通常の html ファイルから)
- 構文の強調表示はプラスになりますが、実際には必須ではありません
ドキュメントの他の領域は、通常の方法で動作する必要があります (編集可能なフォント プロパティ、編集可能な色など)。
Qt は、 QTextEditでカスタム テキスト オブジェクトを実装する例を提供します。新しいテキスト オブジェクトは QTextEdit / QTextDocument内の既存のインフラストラクチャを利用できないため、これは難しい方法のように見えます。
QTextDocumentのパーツをグループ化できるさまざまな種類のオブジェクトの基本クラス
それを継承することは選択肢かもしれませんが、Qt SDK パッケージのソース ファイルも Google 検索も有用な情報を明らかにしませんでした。
QTextFrameはQTextObjectを継承しているため、このパスに関するヒントが見つかれば、実行可能な基本クラスになる可能性があります。
単純な HTML ファイルでは、これらすべて (構文の強調表示を除く) は簡単です。QTextEditは html を入力として受け取り、html をエクスポートできますが、その過程で構造が失われます。
<code class="code-sample">
int i = 0;
</code>
ちなみに、 QWebViewは読み取り専用です。次のように宣伝しています。
HTML ドキュメントの一部は、たとえば HTML 要素の contenteditable 属性を介して編集可能にすることができます。
これがすぐに利用できるプラットフォームは他にもあるかもしれませんが、テキスト エディターはプラグインとして Qt Creator 内で使用する必要があるため、Qt フレームワークを使用することは理にかなっています。
結論: QTextEditウィジェットにコード領域を実装するにはどうすればよいでしょうか?
その後の編集:
- トランクから Qt sdk を使用 (自身を 4.8.4 として識別)
- トランクからの Qt Creator (Qt Creator 2.6.81)