0

我正在使用 QTextDocument::drawContents(painter) 在窗口简单的 html 上绘画

我想在窗口的一些边距内进行绘图,但我看不到指定绘画目标矩形的直接方法(在画家/窗口中)。

我想有几种方法可以做到:

  • 使用 QTextDocuments::setMargin (尽管这不允许 left/top 使用不同的值。

  • 将 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 回答