【问题标题】:Setting QTextDocument painter's rectangle (where to paint)设置 QTextDocument 画家的矩形(在哪里绘制)
【发布时间】:2016-04-08 11:37:22
【问题描述】:

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

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

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

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

  • 将 html 放入样式化的<div>

  • 对画家应用平移变换。

但是对于我想做的事情来说,这一切似乎有点太多了,我想如果我遗漏了一些直接的东西(就像你用 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 重载可能令人遗憾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多