QCustomPlot之QTextDocument

来源:互联网 发布:淘宝商务模式接单 编辑:程序博客网 时间:2024/06/05 07:54
Embedding plots in a QTextDocument
把Plot嵌入到QTextDocument


报表的生成通常要求在文本文档里插入plot和charts。这个教程说明如何简单的实现QCustomPlot和QTextDocument之间的影响。


这个实例工程同这个教程被称为text-document-integration并且也是完整下载包的一部分


QCPDocumentObject
QCustomPlot和QTextDocument之间的接口是QCPDocumentObject。注意这个类不在标准的qcustomplot.cpp/.h里而是被定义在qcpdocumentobject.cpp/.h里在这个实例工程里。
它有两个目的:
从一个QCustomPlot形成一个文本字符格式。这就允许插入plots到QTextDocument中,在光标所在的位置。
绘制静态的plot在QTextDocument里,当它被重绘或者导出的时候。


让我们假设我们的QCustomPlot是ui->plot并且我们的QTextEdit是ui->textEdit.第一步就是注册QCPDocumentObject作为一个处理者在text document里面的plot对象。
QCPDocumentObject*plotObjectHandle = new QCPDocumentObject(this);
ui->textEdit->document()->documentLayout()->registerHandler(QCPDocumentObject::PlotTextFarmat,plotObjectHandler);
在这个调用之后,我们可以开始插入plots到text document中了。这是一个静态函数QCPDocumentObject::generatePlotFormat(QCustomPlot *plot, int width, int height)。他需要一个plot的矢量化快照并且给出plot的宽度和高度并且转换成QTextCharFormat。返回的QTextCharFromat可以可以用来格式化QChar::ObjectReplacementCharacter然后作为plot对象出现。在当前光标的位置插入一个plot也可以像下面一样
cbUseCurrentSize,sbWdith,sbHeight组件是实例工程的用户接口的一部分。如上所述,在text document里面的plot对象保持了它的矢量特性。因此可以以最高质量的输出成PDF。
保存上面的文档成PDF文件并且用PDF viewer打开。


正如看到的,放大插入图显示的流畅线条
0 0
原创粉丝点击