0

QTextDocument::drawContents(painter) を使用してウィンドウの単純な html にペイントしています

ウィンドウの余白の内側で描画を行いたいのですが、(ペインター/ウィンドウで) 描画の対象となる四角形を直接指定する方法がわかりません。

私はそれを行ういくつかの方法を推測します:

  • QTextDocuments::setMargin を使用します (ただし、これは左/上に異なる値を許可しません。

  • HTMLをスタイル付きに配置する<div>

  • ペインターに変換変換を適用します。

しかし、これは私がやりたいことには少し多すぎるように思えます。何かが欠けていると思います(QPainter::drawTextでターゲットの長方形を伝えるように)

4

1 に答える 1

1

textWidthプロパティを、テキストが収まるはずの領域の幅に設定します。渡すクリッピング四角形はdrawContents、テキストが多すぎて収まらない場合、テキストを垂直方向に切り取ります。もちろん、それについて多くのことはできません。

したがって、これはあなたが求めている不足している機能になります:

void drawContents(QPainter * p, QTextDocument & doc, const QRectF & rect) {
  p->save();
  p->translate(rect.topLeft());
  doc.setTextWidth(rect.width());
  doc.drawContents(p, rect);
  p->restore();
}

はい、いくつかのフープをジャンプする必要があります。そのため、除外する必要があります。drawContentsの同様のオーバーロードが存在しないことは、おそらく嘆かわしいことです。

于 2016-04-08T14:03:39.953 に答える