質問: QtCore.QRectF(rect.x(),rect.y()-rubysize-offset,rect.width(),rubysize+offset) painter.setFont(format.property(7)) painter.drawText(rect,format.property(1)) painter.setFont(QtGui.QFont(format.property(8).rawName(),rubysize)) painter.drawText(ruby_rect,format.property(6),format.property(2)) ``` ご存知の方や、こうすればどうかというお考えをお持ちの方は 何でもいいのでお寄せください。よろしくお願いします。 **~蛇足~** **カスタムテキストオブジェクトに当たっての導入必要な処理** 進捗状況 1BoldやItalic,Underlineをダイナミックに適用する。 × 2fontの変更、fontsizeの変更をダイナミックに適用する。 × 3printoutとpreview表示を可能にする。 × 4save&loadを可能にする。(強引に可能にしたが、もっと楽な方法が欲しい) △ 5copy&pasteを可能にする。 × 1と2と5は、脳内でちょっと図が出来上がっていて、4は、もっ と楽な方法が欲しいです。これはまたおいおい質問していけれ ばいいなと思っています。 すぐに試してみる事も可能なのですが、インターフェースの メソッドを、IntrinsicSizeとdrawObject以外に追加しても 怒られませんよね?
回答: 直接実行できるコードではないので、気づく範囲の回答になりますが、 少なくとも`QPrinter.setResolution()`の引数を間違えているように見えます。 このメソッドの引数は、具体的なDPIを指定することになっており、`QPrinter.HighResolution`は指定しません。`QPrinter.HighResolution`は`QPrinter`のコンストラクタで指定します。(参考: QPrinterの文書) あるいは、プレビューであれば`QPrintPreviewDialog`のコンストラクタに`QPrinter`を指定しなくても十分と思います。 一方、`QPrinter.HighResolution`を`QPrinter`に指定する場合、1200DPIとして扱われるようなので、`RubyTextObjectInterface.intrinsicSize()`や`drawObject()`内で描画物を「1200 ÷ 96」倍で描画すると、プレビュー画面で見えるようになると思います。 #「96」は`QPrinter.ScreenResolution`を指定した際のDPI。 以上、参考になれば幸いです。