• QT 在主机默认PDF查看应用中打开PDF文档(如通过菜单栏打开使用手册)


    QT 在主机默认PDF查看应用中打开PDF文档(如通过菜单栏打开使用手册)

    前言

    在软件制作完成后,我们都需要告诉用户如何使用软件,《使用手册》是一个非常必要的输出文件,能够让用户自行了解软件的使用方法。我观察到很多上位机会在菜单栏中加入打开使用手册的选项,可以直接通过点击打开使用手册,值得学习一下并用在自己的软件中。
    下面是我在网上找到的一些方法

    通过执行CMD命令打开

    这个的话无疑会受到平台限制,Linux系统中应该就不能这样用了

    QString currentPath = QCoreApplication::applicationDirPath(); //获取当前项目路径
    QProcess p(0);
    //使用CMD打开使用手册文件,文件放于执行程序同目录doc文件夹中
    p.start("cmd", QStringList()<<"/C"<<QString("%1/doc/使用手册.pdf").arg(currentPath));
    p.waitForStarted();
    p.waitForFinished();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这种方法需要把手册放在特定的目录位置,如果用户把文件破坏了(比如移到了其他位置),那么就不能通过上位机操作来打开PDF了。
    我们测试的时候就需要把文件放在构建完成的目录中
    在这里插入图片描述
    在这里插入图片描述

    使用QDesktopServices类打开

    要使用的话需要引入头文件

    QString currentPath = QCoreApplication::applicationDirPath(); //获取当前项目路径
    QString filePath = QString("%1/doc/使用手册.pdf").arg(currentPath); //文件绝对路径
    QDesktopServices::openUrl(QUrl::fromLocalFile(filePath));
    
    • 1
    • 2
    • 3

    这种方法也需要将文件放在特定的构建项目目录中,和上面一样

    注意

    这个打开PDF的方式使用电脑默认的打开PDF的应用,比如浏览器或者一些文档软件,看你设置的是什么

    结尾

    我们可以发现,这两种方法都存在同一个缺点,需要特定的项目文件架构,而且打包后还要手动把文件放到项目中,比较麻烦。不知道能不能通过添加资源文件,直接打开资源文件的方式来操作,而且资源文件打包的时候也会带上,不需要手动添加。有无大佬救救我。

  • 相关阅读:
    stretchly定时提醒软件
    leetcode76 Minimum Window Substring
    python 基础之垃圾回收机制
    写一个简单食用的拦截器
    多架构环境下docker-compose部署rocketmq单机模式—— 筑梦之路
    Day30 接口测试requests
    Springboot+vue的医患档案管理系统。Javaee项目,springboot vue前后端分离项目。
    Java-CMS
    算法进阶-2sat-cf-1400C
    面试官:你天天用 Lombok,说说它什么原理?我竟然答不上来…
  • 原文地址:https://blog.csdn.net/qq_16186465/article/details/126537175