我使用QTextDocument :: drawContents(画家)在一个简单的窗口上绘画
我想在窗口的某些边距内进行绘制,但我没有看到指定绘画的目标矩形的直接方法(在画家/窗口中)。
我想有几种方法可以做到:
使用QTextDocuments :: setMargin(虽然这不允许左/上的不同值。
将html放入样式化的<div>
将转换变换应用于画家。
但是对于我想要做的事情,所有这些似乎有点太多了,我想如果我错过了一些东西(就像你使用QPainter :: drawText那样告诉目标矩形)
答案 0 :(得分: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
的类似重载不存在。