Qt实现Qchart的打印和打印预览的几种方法

网友投稿 1356 2022-09-30

Qt实现Qchart的打印和打印预览的几种方法

实现打印预览和打印,是挺常用的功能。把其他一些内容如QTextBrowser或者QEditText打印和打印预览是容易的,因为它们都自带了print方法,可以直接输出到printer。这里介绍下Qt实现Qchart的打印和打印预览的几种方法。

首选介绍下Qt如何实现打印预览功能。

打印预览的实现

使用Qt自带的QPrintPreviewDialog和QPrinter。

void MainWindow::PrintPreview(){ QPrinter printer(QPrinter::HighResolution); //自定义纸张大小,特别重要,不然预览效果极差 printer.setPageSize(QPrinter::Custom); printer.setPaperSize(QSizeF(600, 800),QPrinter::Point); QPrintPreviewDialog preview(&printer, this);// 创建打印预览对话框 preview.setMinimumSize(1000,600); connect(&preview,SIGNAL(paintRequested(QPrinter*)),this,SLOT(Preview(QPrinter*) ) ); preview.exec(); //打印对话框显示,paintRequest触发}

void MainWindow::Preview(QPrinter *printer){ ui->textBrowser->print(printer);}

Qchart的打印

方法一,使用QTextDocument

打印html文件模板。html文件中带上图片路径:

特立独行的猫哥

我的第一个标题

一个来自文件中的图像:

void MainWindow::Preview(QPrinter *printer){ //ui->tb->print(printer); QString fileContent = ""; QFile file1("./test.html"); //htmlfileName:本地的制作好的html文件 if (file1.open(QIODevice::ReadOnly)) { QTextStream fs(&file1); fs.setCodec("UTF-8"); //Qt 使用 UTF-8 编码读取文件,解决打印的文件中文乱码 fileContent = fs.readAll(); file1.close(); } QTextDocument textDocument; textDocument.setHtml(fileContent); textDocument.print(printer);}

方法二,使用QPainter

void MainWindow::Preview(QPrinter *printer){ //ui->tb->print(printer); QPainter painter(printer); QPixmap pix; pix.load("./chart1.png"); // painter.drawPixmap(0,0,850,850,pix); //在(0,0)点起始的宽高均为50的句型中显示图片 qreal wid = pix.width(); //获取图像的宽高 qreal hei = pix.height(); pix = pix.scaled(wid*5,hei*5,Qt::KeepAspectRatio);//将图片宽高扩大两倍,且在矩形内保持宽高比值 painter.drawPixmap(0,0,pix);}

保存Qchart为图片

{ //抓取qchart图片 QPixmap pix = ui->qchart2->grab(); QImage image = pix.toImage(); QString imgname = "_chart2.png"; imgname = PIC_PATH+imgname; image.save(imgname);}

引用

​​QT打印,打印预览_尔容又夏的博客_qt打印预览​​

​​QT实现打印预览及生成Pdf功能_小MarkK的博客-_qt打印pdf​​

​​【QT5】QPixmap的使用_&Mr.Gong的博客-_qpixmap用法​​

​​C/C++ Qt QChart 绘图组件应用_LyShark 孤风洗剑的博客-​​

​​1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览_to.to的博客​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序如何获取input标签的值(微信小程序简述如何获取input输入框的值)
下一篇:开发免费小程序「微信小程序免费开发平台」
相关文章

 发表评论

暂时没有评论,来抢沙发吧~