设置 QTextDocument 画家的矩形(在哪里画)

Setting QTextDocument painter's rectangle (where to paint)

我正在使用 QTextDocument::drawContents(画家)

在 window 简单 html 上作画

我想在 window 中的一些边距内绘制,但我没有看到指定绘画目标矩形的直接方法(在 painter/window 中)。

我猜有几种方法:

但是所有这些对于我想做的事情来说似乎有点太多了,我想我是否直接遗漏了一些东西(就像你告诉目标矩形的 QPainter::drawText 所做的那样)

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 的类似重载不存在。