を使用してリッチテキストアイテムを実装していますQGraphicsTextItem
フォント サイズを設定するには、たとえば次のようにします。
void set (int fontSize) {
QTextCursor _cursor = textCursor();
QTextCharFormat _format;
_format.setFontPointSize(fontSize);
_cursor.mergeCharFormat(_format);
setTextCursor(_cursor); }
はるかに複雑なのは、フォント サイズを読み取ることです。
選択があると仮定すると、ドキュメントを繰り返し処理し、すべてQTextBlock
の ,QTextFragment
を読んでQTextCharFormat
...
しかし、単純なオプションは、選択がない場合は、カーソルのフォントサイズを読み取るだけです:
int get () {
return textCursor().charFormat().fontPointSize(); }
これは機能しますが、3 つの問題が見つかりました。
QGraphicsTextItem
1)プロパティによるフォントサイズの設定:
QFont f = font();
f.setPointSize(20);
setFont(f);
get
これは、上記の関数によって 0 を返します。項目全体のフォント サイズを設定するには、関数と同じ方法を使用する必要がありset
ます。メソッドは、から読み取ることができるフォントを設定する
べきではありませんか?setFont
QTextCursor
2)setHtml
フォーマットを設定できますが、そのフォーマットを読み取る方法がわかりません
。html フラグメントからリッチ テキストのフォーマットを読み取るにはどうすればよいですか? html を解析する唯一の可能性はありますか?
3)(私の現在のつまずき)
外部ソースからフォーマットされたテキストをコピーして貼り付けるとQGraphicsTextItem
、ソースのフォーマットが維持されているように見えますが、そのフォーマットをどのように読むことができますか?
上記のget
メソッドは、テキストが外部から貼り付けられた場合、フォント サイズ 0 を読み取ります。
font().pointSize()
常に 8 を返します (設定していないので、デフォルトだと思います)
テキスト形式を読み取る別の方法はありますか?
クリップボードのテキストは html を使用してフォーマットされていますか?
貼り付けたテキストからフォント サイズ (またはその他の書式設定) を見つけるにはどうすればよいですか?
(配置などのブロックの書式設定にも同じ質問が適用されます)。