在我的应用程序中,有一个QTextEdit对话框,可以接受Rich Text Input。出于某种目的,我需要将此输入转换为图像。
如果是纯文本,我可以使用与QPainter类关联的DrawText。但Rich文本的处理方式与我们不知道格式化完成的方式不同。
有关如何转换的任何建议?
答案 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()
方法在内部的作用。