QT中的富文本图像

时间:2014-06-18 11:11:13

标签: qt qpainter

在我的应用程序中,有一个QTextEdit对话框,可以接受Rich Text Input。出于某种目的,我需要将此输入转换为图像。

如果是纯文本,我可以使用与QPainter类关联的DrawText。但Rich文本的处理方式与我们不知道格式化完成的方式不同。

有关如何转换的任何建议?

3 个答案:

答案 0 :(得分:5)

您可以通过以下方式获取QTextEdit的内容:

QTextEdit te("This is a rich text");
te.resize(100, 100);
QPixmap pix = QPixmap::grabWidget (&te, te.rect());
pix.save("test.png");

答案 1 :(得分:4)

您可以使用QTextEdit::document + QTextDocument::drawContents。根据其他作者的建议,您不需要使用渲染小部件,因为抗锯齿设置可能存在一些问题。

答案 2 :(得分:2)

或者,正如评论中所述,您可以使用窗口小部件的render方法将窗口小部件内容绘制到像素图中:

void saveImage(QTextEdit* te) {
    QPixmap pixmap(te->size());
    QPainter painter(&pixmap);

    te->render(&painter);
    pixmap.save("test.png");
}

这基本上是QPixmap::grabWidget()方法在内部的作用。