设置 QTextDocument 画家的矩形(在哪里画)
Setting QTextDocument painter's rectangle (where to paint)
我正在使用 QTextDocument::drawContents(画家)
在 window 简单 html 上作画
我想在 window 中的一些边距内绘制,但我没有看到指定绘画目标矩形的直接方法(在 painter/window 中)。
我猜有几种方法:
使用 QTextDocuments::setMargin(虽然这不允许 left/top 的不同值。
将 html 放入样式化的 <div>
正在对画家应用平移变换。
但是所有这些对于我想做的事情来说似乎有点太多了,我想我是否直接遗漏了一些东西(就像你告诉目标矩形的 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
的类似重载不存在。
我正在使用 QTextDocument::drawContents(画家)
在 window 简单 html 上作画我想在 window 中的一些边距内绘制,但我没有看到指定绘画目标矩形的直接方法(在 painter/window 中)。
我猜有几种方法:
使用 QTextDocuments::setMargin(虽然这不允许 left/top 的不同值。
将 html 放入样式化的
<div>
正在对画家应用平移变换。
但是所有这些对于我想做的事情来说似乎有点太多了,我想我是否直接遗漏了一些东西(就像你告诉目标矩形的 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
的类似重载不存在。