38435


`QTextBlock`を利用して、割注や縦中横の実現を企んでいます。  
以前より疑問に思っていて、スッキリ！できなかったのですが、  
①setLineCount,②setRevision,③setVisibleの３つについて  
お尋ねしたいです。  
この３つは、読んで字のごとく、  
①そのブロックの行の数をセットするもの。（ただし、全てのドキュメントレイアウトが  
この特徴を備えているわけではないと、リファレンスに注意書き。）  
②そのブロックをリビジョン（改訂？）する。  
③そのブロックを可視化する。  
というものだと考えているのですが、どれもいまいち効果がわかりません。  
まず、setLineCount(2)として、ラインをセットしたとすると、  
blockのlayoutを取得して、lineAt(1000)などとしても、エラーもなく  
アドレスが帰ってきますし、lineはだからといって２行になっている  
わけでもありません。素直に、２行になりゃいいのにと思うのに、なって  
くれないのです。  
セットした以上のライン数を指定し、QTextLineを取得することができて  
しまうのも、わけがわかりません。余分な指定は無視されて、全部現在の最  
大数番目のlineが、帰って来るのか？（２とセットすれば、１０００だろうが  
１００００だろうが、２のラインが帰って来る）と思ったのですが、判定は  
Falseです。  
Revisionというのは、改訂という話なのでしょうが、何がどう改訂される  
のかわけがわかりません。  
最後に、Visibleをセットして可視化しようと思っても、ブロックが可視化  
されるわけではないので、非常にがっかりした経験があります。ブロックは  
複雑なうえに、全くといっていいほど目に見えないからです。  
QTextLayout,QTextLine,QTextBlockの、3者の関係性については、理解  
出来る部分もあるのですが、この特に①の特徴によって、長らく混乱させられ  
てきました。  
何とか自分で解決しようと今までやってきたつもりなのですが、ついぞ、その  
効果は理解できませんでした。  
どなたか、スッキリ！させていただけるような解答をお持ちではありませんか？  
どうかお願いいたします。  


CC BY-SA 3.0
2017-10-01T04:30:01.337
38334
2017-10-04T21:34:16.380
24284
question
python python3 qt
QTextBlock 効果が実感できないメソッド達について


`QTextBlock#setLineCount`, `QTextBlock#setRevision`,
`QTextBlock#setVisible`は、ライブラリ実装を見る限り、内部処理(Layoutの描画等)でしか利用されていない模様です。  
つまり、独自実装する際に、これらのプロパティを見て処理を振り分けられる、という程度の活用になるかと思います。(自動的は作用は期待しない)

＃Undo, Redo関係の機構は「Undo Framework」として別に存在します。


CC BY-SA 3.0
2017-10-04T21:34:16.380
38435
2017-10-04T21:34:16.380
20098
38334
answer