维护网站需要什么技术,枣庄专业做网站,华为官方网站,怎么用ps做网站首页图片第三代软件开发-PDF阅读器 文章目录 第三代软件开发-PDF阅读器项目介绍PDF阅读器1 初始化PDF view2 qml 中使用3 创建模块 关键字#xff1a;
Qt、
Qml、
pdf、
LTDev、
本地 项目介绍 欢迎来到我们的 QML C 项目#xff01;这个项目结合了 QML#xff08;Qt Met…
第三代软件开发-PDF阅读器 文章目录 第三代软件开发-PDF阅读器项目介绍PDF阅读器1 初始化PDF view2 qml 中使用3 创建模块 关键字
Qt、
Qml、
pdf、
LTDev、
本地 项目介绍 欢迎来到我们的 QML C 项目这个项目结合了 QMLQt Meta-Object Language和 C 的强大功能旨在开发出色的用户界面和高性能的后端逻辑。 在项目中我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件我们能够迅速开发出丰富多样的界面效果和动画效果。同时我们利用 QML 强大的集成能力轻松将 C 的底层逻辑和数据模型集成到前端界面中。 在后端方面我们使用 C 编写高性能的算法、数据处理和计算逻辑。C 是一种强大的编程语言能够提供卓越的性能和可扩展性。我们的团队致力于优化代码减少资源消耗以确保我们的项目在各种平台和设备上都能够高效运行。 无论您是对 QML 和 C 开发感兴趣还是需要我们为您构建复杂的用户界面和后端逻辑我们都随时准备为您提供支持。请随时联系我们让我们一同打造现代化、高性能的 QML C 项目 重要说明☝
☀该专栏在第三代软开发更新完将涨价
PDF阅读器
同上篇【038_第三代软件开发-简易视频播放器自定义Slider (二)】一样这个功能就是为了显示我们的软件说明书。同样适用平率不怎么搞而QML本身好像不怎么具备PDF文件的预览的。这里我最开始向导的就是使用web来实现并且我真的非常非常认真的让GPT给我写了一个H5我在Google浏览器里面测试没有问题。代码如下
!DOCTYPE html
html
headtitle打开和预览本地PDF文件/title
/head
bodyinput typefile idpdfInput accept.pdfembed idpdfPreview typeapplication/pdf width100% height600pxscriptdocument.getElementById(pdfInput).addEventListener(change, function(e) {var file e.target.files[0];var reader new FileReader();reader.onload function(e) {document.getElementById(pdfPreview).setAttribute(src, e.target.result);};reader.readAsDataURL(file);});/script
/body
/html在上述示例中我们使用了input typefile元素来创建一个选择文件的输入框并通过添加accept.pdf来限制只能选择PDF文件。接下来我们使用embed元素来创建一个用于预览PDF文件的窗口。 当用户选择一个PDF文件后change事件将被触发。我们在事件处理程序中获取用户选择的文件对象并创建一个FileReader对象来读取文件内容。读取完成后我们将结果即PDF文件的数据URL赋值给embed标签的src属性以便在窗口中预览PDF文件。 请注意由于安全限制Web浏览器可能会阻止直接在页面中预览本地文件。因此这个示例可能在某些浏览器中无法正常工作。 但是呢当我把这个放到Qt里面的时候发现无法使用所以我转向的万能的github。最后我发现了一个线程的轮子可以用很遗憾的是我没有存链接我好找了一圈也没有再次找到也没有fork 一下。所以我把目前的这部分代码打包了一下上传了0积分下载大家可以直接下载使用。
链接地址https://download.csdn.net/download/z609932088/88171703?spm1001.2014.3001.5503
1 初始化PDF view
首先我们需要在main.cpp里面包含头文件
#include QtWebView/QtWebView#include it/ltdev/qt/cpp/components/qtpdfviewerinitializer.h紧接着需要咋我们的QApplication创造前完成初始化
LTDev::QtPdfViewerInitializer::initialize(); 在完成QApplication初始化后链接QApplication结束信号槽
QObject::connect(app, QApplication::aboutToQuit, LTDev::QtPdfViewerInitializer::getInstance(), LTDev::QtPdfViewerInitializer::deleteInstance);完成以上基本这里我们可以编译一下看下是否存在问题存在修复即可不存在就可以在QML中包含对应模块使用了。
2 qml 中使用
首先同样需要在qml import相关模块最后一个就是我们的pdf模块
import QtWebView 1.15
import QtWebEngine 1.10
import it.ltdev.qt.qml.components 1.0 as LTDev3 创建模块
这部分就可以把它当做有个普通的控件来使用就可以了重要的我在注释中也说了在ubuntu 下是需要–no-sandbox参数运行程序的。
/*WebView 模块运行需要加 --no-sandbox参数--no-sandbox 参数不能使用 gdb调试如果要使用gdb 调试可以先把这个注释掉这个就是一个展示帮助文档的PDF*/LTDev.PdfView {id: pdfViewanchors.fill: parentvisible: trueonError: {pdfView.visible falsepdfView.opacity 0var json JSON.parse(message)}onViewerLoaded: {pdfView.load(/home/UserHelp.pdf)}onPdfLoaded: {pdfView.visible truepdfView.opacity 1}}