【问题标题】:Setting QTextDocument painter's rectangle (where to paint)设置 QTextDocument 画家的矩形(在哪里绘制)
【发布时间】:2016-04-08 11:37:22
【问题描述】:
我正在使用 QTextDocument::drawContents(painter) 在窗口简单的 html 上绘画
我想在窗口的一些边距内进行绘图,但我没有看到指定绘画目标矩形的直接方法(在画家/窗口中)。
我想有几种方法可以做到:
但是对于我想做的事情来说,这一切似乎有点太多了,我想如果我遗漏了一些直接的东西(就像你用 QPainter::drawText 做的那样,你告诉目标矩形)
【问题讨论】:
标签:
html
qt
qtextdocument
【解决方案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 重载可能令人遗憾。