当前位置: 首页 > news >正文

QT5.15.2加载pdf为QGraphicsScene的背景

5.15.2使用pdf

必须要安装QT源码,可以看到编译器lib目录已经有pdf相关的lib文件,d是debug
在这里插入图片描述
1.找到源码目录:D:\soft\QT\5.15.2\Src\qtwebengine\include
在这里插入图片描述
复制这两个文件夹到编译器的包含目录中:D:\soft\QT\5.15.2\msvc2019_64\include
在这里插入图片描述
2.找到D:\soft\QT\5.15.2\Src\qtwebengine\src\pdf\api目录,将目录下的文件夹全部复制替换到D:\soft\QT\5.15.2\msvc2019_64\include\QtPdf中。
在这里插入图片描述
3.将D:\soft\QT\5.15.2\Src\qtwebengine\src\pdfwidgets以下文件复制替换到到D:\soft\QT\5.15.2\msvc2019_64\include\QtPdfWidgets中
在这里插入图片描述
4.修改pro文件,不用加入附加包含目录,只需要加入附加库目录和lib名称即可

LIBS += -LD:/soft/Qt/5.15.2/msvc2019_64/lib

CONFIG(debug, debug|release){
    LIBS += -lQt5Pdfd
    LIBS += -lQt5PdfWidgetsd
}
else
{
    LIBS += -lQt5Pdf
    LIBS += -lQt5PdfWidgets
}

5.测试

#include <QApplication>
#include <QtPdf/QPdfDocument>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPdfDocument *doc = new QPdfDocument;
    doc->load("D:/1.pdf");
    QSizeF pageSize = doc->pageSize(0);
    QImage image = doc->render(0,pageSize.toSize());
    image.save("D:/1.png");
    return a.exec();
}

加载pdf为QGraphicsScene的背景

#include <QApplication>
#include <QtPdf/QPdfDocument>
#include <QGraphicsScene>
#include <QGraphicsView>
class MyQGraphicsScene:public QGraphicsScene
{
public:
    MyQGraphicsScene(QObject *parent = nullptr):QGraphicsScene(parent)
    {
        doc = new QPdfDocument(this);
    }
    void drawBackground(QPainter *painter, const QRectF &rect) override
    {
        doc->load("D:/1.pdf");
        QSizeF pageSize = doc->pageSize(0);
        QImage image = doc->render(0,pageSize.toSize());
        painter->setPen(Qt::blue);
        painter->setBrush(image);
        painter->drawRect(sceneRect());
    }

private:
    QPdfDocument *doc = nullptr;
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建自定义场景
    MyQGraphicsScene *scene = new MyQGraphicsScene();
    scene->setSceneRect(0,0,500,400);
    // 创建视图,并设置场景
    QGraphicsView *view = new QGraphicsView(scene);
    view->setFixedSize(800,600);
    view->show();
    return a.exec();
}

重写QGraphicsScene的drawBackground方法即可达到目的
在这里插入图片描述

相关文章:

  • Matlab 汽车传动系统的振动特性分析
  • Elasticsearch 滚动索引(Rollover Index)详解
  • 算法基础篇(蓝桥杯常考点)
  • ZED X系列双目3D相机的耐用性与创新设计解析
  • SpringCloud 学习笔记2(Nacos)
  • AMBA-CHI协议详解(二十三)
  • vue2:el-table列中文字前面加icon图标的两种方式
  • AI自动获客系统源码
  • 【LangChain】理论及应用实战(5):Agent
  • Linux 入门:权限的认识和学习
  • 非常优秀的1个软件,再也不求人了!
  • DBA(数据库管理员)常用的 Linux 命令
  • Unity教程(二十二)技能系统 分身技能
  • 居家养老老年信息大数据分析基于SpringBootSSM框架
  • 实现回车键自动登录功能:Vue 2 和 Vue 3 的解决方案
  • 力扣No.673.最长递增子序列的个数
  • 【css酷炫效果】实现鱼群游动动态效果
  • 使用OBS进行webRTC推流参考
  • 封装element-plus的组件暴露原生属性和方法
  • MultiPost--多平台博客发布工具
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 中期选举后第三势力成“莎拉弹劾案”关键,菲律宾权斗更趋复杂激烈
  • 媒体评欧阳娜娜遭民进党当局威胁:艺人表达国家认同是民族大义
  • 杨文庄当选中国人口学会会长,曾任国家卫健委人口家庭司司长
  • 奥迪车加油时频繁“跳枪”维修两年未解决,4S店拒退换:可延长质保
  • 法治课|争议中的“行人安全距离”于法无据,考量“注意义务”才更合理