实现打印预览和打印,是挺常用的功能。把其他一些内容如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);
- }
打印html文件模板。html文件中带上图片路径:
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>特立独行的猫哥title>
- head>
- <body>
- <h1>我的第一个标题h1>
- <p>一个来自文件中的图像:p>
- <img src="./chart1.png" width="600" height="400">
- body>
- 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);
-
- }
- 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图片
- QPixmap pix = ui->qchart2->grab();
- QImage image = pix.toImage();
- QString imgname = "_chart2.png";
- imgname = PIC_PATH+imgname;
- image.save(imgname);
- }
QT打印,打印预览_尔容又夏的博客-CSDN博客_qt打印预览
QT实现打印预览及生成Pdf功能_小MarkK的博客-CSDN博客_qt打印pdf
【QT5】QPixmap的使用_&Mr.Gong的博客-CSDN博客_qpixmap用法
C/C++ Qt QChart 绘图组件应用_LyShark 孤风洗剑的博客-CSDN博客
1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览_to.to的博客-CSDN博客