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

简介: 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文件中带上图片路径:


<!DOCTYPE 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);
}


方法二,使用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打印,打印预览_尔容又夏的博客-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博客

相关文章
|
7月前
QT中HASH函数方法
QT中HASH函数方法
199 0
|
7月前
|
编解码 并行计算 Java
QT界面中实现视频帧显示的多种方法及应用(二)
QT界面中实现视频帧显示的多种方法及应用
1024 0
|
7月前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
1307 0
|
数据采集 监控 网络协议
linux系统中利用QT实现视频监控的基本方法
linux系统中利用QT实现视频监控的基本方法
388 0
|
人工智能 文字识别 算法
linux系统中利用QT实现车牌识别的方法
linux系统中利用QT实现车牌识别的方法
153 0
|
Linux API Windows
linux系统中利用QT实现蓝牙功能的方法
linux系统中利用QT实现蓝牙功能的方法
570 0
|
Linux
linux系统中利用QT实现串口通信的方法
linux系统中利用QT实现串口通信的方法
341 0
|
存储 SQL 关系型数据库
linux系统中使用QT来实现数据库的调用方法
linux系统中使用QT来实现数据库的调用方法
105 0
|
Linux
linux系统中QT里面的视频播放器的实现方法
linux系统中QT里面的视频播放器的实现方法
244 0
|
Linux C++
linux系统中使用QT实现APP开发的基本方法
linux系统中使用QT实现APP开发的基本方法
143 0