• 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的应用,比如浏览器或者一些文档软件,看你设置的是什么

    结尾

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

  • 相关阅读:
    fork()函数的返回值
    除硅树脂-HP4500
    ElementUI + vue 与 js 使用不同 + 外部引用 +loading区域加载()2022.9.17
    AntDesignBlazor示例——Modal表单
    项目沟通管理案例题
    flink的分组聚合、over聚合、窗口聚合对比
    C++ 17 一些好用的特性
    2023年第二十届五一数学建模B题:快递需求分析问题-思路详解
    说一说:ThreadLocal 、CallContext 、AsyncLocal
    编程参考 - std::exchange和std::swap的区别
  • 原文地址:https://blog.csdn.net/qq_16186465/article/details/126537175