質問: `QTextBlock`を利用して、割注や縦中横の実現を企んでいます。 以前より疑問に思っていて、スッキリ!できなかったのですが、 1setLineCount,2setRevision,3setVisibleの3つについて お尋ねしたいです。 この3つは、読んで字のごとく、 1そのブロックの行の数をセットするもの。(ただし、全てのドキュメントレイアウトが この特徴を備えているわけではないと、リファレンスに注意書き。) 2そのブロックをリビジョン(改訂?)する。 3そのブロックを可視化する。 というものだと考えているのですが、どれもいまいち効果がわかりません。 まず、setLineCount(2)として、ラインをセットしたとすると、 blockのlayoutを取得して、lineAt(1000)などとしても、エラーもなく アドレスが帰ってきますし、lineはだからといって2行になっている わけでもありません。素直に、2行になりゃいいのにと思うのに、なって くれないのです。 セットした以上のライン数を指定し、QTextLineを取得することができて しまうのも、わけがわかりません。余分な指定は無視されて、全部現在の最 大数番目のlineが、帰って来るのか?(2とセットすれば、1000だろうが 10000だろうが、2のラインが帰って来る)と思ったのですが、判定は Falseです。 Revisionというのは、改訂という話なのでしょうが、何がどう改訂される のかわけがわかりません。 最後に、Visibleをセットして可視化しようと思っても、ブロックが可視化 されるわけではないので、非常にがっかりした経験があります。ブロックは 複雑なうえに、全くといっていいほど目に見えないからです。 QTextLayout,QTextLine,QTextBlockの、3者の関係性については、理解 出来る部分もあるのですが、この特に1の特徴によって、長らく混乱させられ てきました。 何とか自分で解決しようと今までやってきたつもりなのですが、ついぞ、その 効果は理解できませんでした。 どなたか、スッキリ!させていただけるような解答をお持ちではありませんか? どうかお願いいたします。
回答: `QTextBlock#setLineCount`, `QTextBlock#setRevision`, `QTextBlock#setVisible`は、ライブラリ実装を見る限り、内部処理(Layoutの描画等)でしか利用されていない模様です。 つまり、独自実装する際に、これらのプロパティを見て処理を振り分けられる、という程度の活用になるかと思います。(自動的は作用は期待しない) #Undo, Redo関係の機構は「Undo Framework」として別に存在します。