Qt帮助系统的制作

2023-11-15

**原文链接Qt帮助系统的制作

Qt的帮助系统很好看,观察自带的帮助都是HTML格式,当然最好的方法是使用QtWeb模块,但好多Qt版本不支持啊.想到QTextBrowser可以显示图片啥的,一阵乱撸终于搞定,分享之…

系列目录

本文是系列教程<跟随Designer源码学Qt>中的一篇详见跟随Designer源码学Qt

效果

见原文

过程

我是拿Designer的帮助系统来操刀,首先想的是用QTextBrowser直接读取HTML文件后显示,但是悲剧的是页面中的图片全部不能正常显示,突然想到在Designer中明明可以插入图片显示啊.在Designer查看HTML源码视图中发现只能插入Qt文件系统的图片恍然大悟,于是突发奇想:如果能将帮助页面中的图片都来源于Qt的文件系统就行了,结果还真是可以!!

实现步骤

  1. 将要制作的所有文件添加到Qt资源系统中(如果有文件夹,可以添加多次,务必全部添加上)
  2. 找个好的文本编辑器(我用的Sublime)可以进行全局替换
  3. 将html中的href和图片全部换为你的资源路径,(搜索href="),这一步最重要
<!-- 替换后的示例 -->
<a href=":/help/doc/qtdesigner-manual.html">
  1. 修改css文件中的url路径为资源url路径(搜索 url)
  2. 编写代码读取内容后然后调用QTextBrowser的setHtml函数加载主页,然后里面的子链接要重载anchorClicked函数进行加载,如下面所示.

核心代码

#include "helpsystemdialog.h"
#include "ui_helpsystemdialog.h"

#include <QFile>
#include <QDesktopWidget>
#include <QApplication>

HelpSystemDialog::HelpSystemDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::HelpSystemDialog)
{
    ui->setupUi(this);

    QRect rect = qApp->desktop()->availableGeometry();
    resize(rect.width(), rect.height());
    setWindowFlags((windowFlags() & ~Qt::WindowContextHelpButtonHint) | Qt::WindowMinMaxButtonsHint);

    loadFile(":/help/doc/qtdesigner-manual.html");
}

HelpSystemDialog::~HelpSystemDialog()
{
    delete ui;
}

void HelpSystemDialog::loadFile(QString fileName)
{
    QFile file(fileName);
    if(file.open(QIODevice::ReadOnly)){
        ui->textBrowser->setHtml(file.readAll());
        file.close();
    }
}

void HelpSystemDialog::on_textBrowser_anchorClicked(const QUrl &arg1)
{
    if(!arg1.path().isEmpty()){
        loadFile(arg1.path());
    }
}

PS

好吧,没啥多说的,效果还是很不错的,主要的是可以将帮助直接封装到可执行文件中,很是炫酷哦

PPS

我只是借用Qt的帮助,如果你自己要重写帮助可以先用HTML写好(可以在浏览器中预览还是很方便的),然后采用前文说的步骤一样是可以的,欢迎留言哦…

更新

为了兼容原html,改用替换路径的形式提供,思路与前文同,同时增加了demo程序以供下载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt帮助系统的制作 的相关文章

  • 【C/C++】报错问题积累

    1 出现Deprecated declaration XXX give arg types c文件中 有没有参数的函数时 声明需要加void即 main c void fun main h void fun void
  • C++操作SQLite数据库

    准备工作 在使用C 操作SQLite之前 需要获得sqlite3 h sqlite3 lib sqlite3 dll 大家可以在 这里 下载 并将这3个文件导入VC 工程中 其中sqlite3 dll文件放到Debug文件夹里 SQLite
  • R语言学习笔记:分析学生的考试成绩

    孩子上初中时拿到过全年级一次考试所有科目的考试成绩表 正好可以用于R语言的统计分析学习 为了不泄漏孩子的姓名 就用学号代替了 感兴趣可以下载测试数据进行练习 num class chn math eng phy chem politics
  • [原]Pro*C介绍-内嵌SQL

    Translate by Z Jingwei Document address http www db stanford edu ullman fcdb oracle or proc html Pro C介绍内嵌SQL 概要 Pro C语法
  • Qt5学习之路(vs2012下创建一个QT应用程序)2013-10-14

    刚开始学习QT在网上找的资料基本都是使用QT Create进行开发的 VS下开发的学习资料感觉很少很难找的到 视频教程也基本没看到过貌似 因为我们研发中心是使用MFC进行开发开发工具是VS2010 使用QT开发的话基本我们不会再使用QT C
  • 编写递归算法,计算二叉树叶子结点的数目。

    编写递归算法 计算二叉树叶子结点的数目 编写递归算法 计算二叉树叶子结点的数目 include stdio h 包含 getchar scanf printf include malloc h malloc 动态申请空间 函数 二叉树 结点
  • C语言pcre库的使用及验证IP地址的合法性

    PCRE是一个用C语言编写的正则表达式函数库 它十分易用 同时功能也很强大 性能超过了POSIX正则表达式库和一些经典的正则表达式库 在使用PCRE库时 首先肯定是需要安装pcre的 不过一般的系统都会有自带的PCRE库 不过如果想使用最新
  • std::nth_element bug引起的crash问题

    1 源码 auto less compare const MirroringGroup mg1 const MirroringGroup mg2 gt bool return mg1 usage lt mg2 usage std nth e
  • c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建

    推荐视频课程 https www bilibili com video BV1et411b73Z p 2 已投币三连 b站果然是个学习的网站 本来是想在linux环境下运行QT 于是先学了几个月linux嵌入式驱动开发 后来发现太底层了 与
  • c++得到窗口句柄

    include
  • 如何学好C语言的数据结构与算法?

    C语言的数据结构与算法 难就难在链表 学会了链表 可能后面就一点都不难了 书籍推荐 数据结构与算法分析 C语言描述版 要深入学习的话可以选择这本书 因为针对链表的讲解是比较详细的 所以可以很快理解链表 跟着书上一点点实现基本操作 增删改查
  • GDAL多光谱与全色图像融合简单使用

    目录 简述 C 代码 效果对比 GDAL融合效果和原始多光谱波段对比 GDAL融合效果和原始全色波段对比 ARCGIS融合效果与原始全色和多光谱对比 GDAL融合效果与ArcGIS融合效果对比 简述 最近在GDAL的代码中看见了gdalpa
  • Lua和C++交互总结(很详细)

    出处 http blog csdn net shun fzll article details 39120965 一 lua堆栈 要理解lua和c 交互 首先要理解lua堆栈 简单来说 Lua和C c 语言通信的主要方法是一个无处不在的虚拟
  • 【干货】Chrome插件(扩展)开发全攻略(不点进来看看你肯定后悔)<转>

    干货 Chrome插件 扩展 开发全攻略 不点进来看看你肯定后悔 写在前面 我花了将近一个多月的时间断断续续写下这篇博文 并精心写下完整demo 写博客的辛苦大家懂的 所以转载务必保留出处 本文所有涉及到的大部分代码均在这个demo里面 h
  • 为何在新建STM工程中全局声明两个宏

    在uVision中新建STM32工程后 需要从STM32标准库中拷贝标准外设驱动到自己的工程目录中 此时需要在工程设置 gt C C 选项卡下的Define文本框中键入这两个全局宏定义 STM32F40 41xxx USE STDPERIP
  • Dev-C++之开启装逼效果

    Dev C 是个不错的C IDE 在10年前 它是很不错 在现在 它是个以界面丑陋和调试像吃粑粑这两点著称 如下图 实在是丑到离谱 丑到无法忍受 可是没办法呀 人家CCF规定比赛用这个 你个小蒟蒻吵什么 我现在就来讲讲怎么把你的Dev C
  • 检查内存泄露

    自己编写的视频处理程序出现了一个问题 每帧的运行时间随着运行时间在不断增长 很大可能是出现了内存泄露 于是学习了一些查看内存泄露的方法 做了两种尝试 一是VS自带的DEBUG下的检测 view pl html view plain copy
  • 一个简单的参数帮助框架,c实现

    文章目录 具体实现如下 include
  • C/C++编程:令人印象深刻的高级技巧案例

    C C 编程语言在软件开发领域有着悠久的历史 由于其高效 灵活和底层访问能力 至今仍然被广泛应用 本文将介绍一些在C C 编程中令人印象深刻的高级技巧 帮助读者提升编程水平 更加高效地使用这两种强大的编程语言 一 指针运算与内存管理 C C
  • C 语言文件读取全指南:打开、读取、逐行输出

    C 语言中的文件读取 要从文件读取 可以使用 r 模式 FILE fptr 以读取模式打开文件 fptr fopen filename txt r 这将使 filename txt 打开以进行读取 在 C 中读取文件需要一点工作 坚持住 我

随机推荐

  • SpringBoot整合ShardingJdbc实现XA分布式事务

    SpringBoot整合ShardingJdbc实现XA分布式事务 什么是分布式事务 关于分布式事务的介绍 请参考ShardingJdbc的介绍 分布式事务 官方文档分布式事务使用示例 使用示例 点进去之后 拉到最下面即可看到 官方exam
  • synchronized底层源码

    一 synchronized的使用场景 synchronized一般使用在下面这几种场景 修饰代码块 指定一个加锁的对象 给对象加锁 public Demo1 Object lock new Object public void test1
  • IDEA GIT工具窗口中 点击提交记录无法查看提交文件的解决

    问题描述 点击提交记录 想要看到提交的文件 期待效果 问题解决 将如图所示的分隔线下拉即可 原因是视图覆盖了 附加一个IDEA工具的技巧 如果工具窗口中没有git 或者 不小心把 git 右键 Remove From Sidebar 了 可
  • TCP/IP详解 卷1:协议 学习笔记 第十五章 TFTP:简单文件传送协议

    TFTP最初打算用于引导无盘系统 通常是工作站或X终端 为保持简单和短小 TFTP使用UDP 它适合只读存储器 开始工作时 TFTP的客户与服务器交换信息 客户发送一个读或写请求给服务器 在一个无盘系统进行引导的正常情况下 第一个请求是读请
  • Qtp自动测试工具

    简介 QTP是Quick Test Professional的简称 是一种自动测试工具 使用QTP的目的是想用它来执行重复的自动化测试 主要是用于回归测试和测试同一软件的新版本 因此你在测试前要考虑好如何对应用程序进行测试 例如要测试哪些功
  • vue路由跳转及其ajax请求,Vue中的路由以及ajax

    Vue请求ajax之fetch 使用方法 fetch url headers token localStorage getItem token content type apllication xxx urlencoded methods
  • AD20/Altium designer——如何对元器件进行批量命名、一键编号

    本文将介绍如何对元器件进行命名 节省项目时间 Let s go 1 选中要一键命名的元器件 选中方法有 Ctrl A全选 鼠标左键长按后框选 Shift长按 鼠标左键单击 2 依次点开 工具 标注 原理图标注 3 按需设置 4 按图操作 5
  • 几种前后端接口的对比:RESTful,GraphQL,APIJSON

    转载地址https blog csdn net kikajack article details 79075405 REST 和 GraphQL 的对比 APIJSON 和 GraphQL 的对比 REST 核心理念是资源 服务端定义资源形
  • 惊了!7 行代码优雅地实现 Excel 文件导出功能?

    点击蓝色 小哈学Java 关注我哟 加个 星标 第一时间获取小哈推送的文章哦 目录 一 前言 二 Apache poi jxl 的缺陷 三 阿里出品的 EasyExcel 安利一波 四 EasyExcel 解决了什么 五 快速上手 六 特殊
  • JavaScript三大组成部分

    总所周知 JavaScript是一种专为网页交互而设计的一种脚本语言 有下列三种不同的组成部分 1 ECMAScript 由ECMA 262定义 规定了一种脚本语言实现应该包含的内容 提供核心语言功能 2 文档对象模型 DOM 提供访问和操
  • 若依前后端分离版项目名称的修改

    若依前后端分离项目名修改 在自主学习若依项目的时候 想着能不能把项目的名称改成自己的项目名然后再进行开发 在网上找了些资料但是都不全面 总有些漏掉的步骤导致项目启动失败 经过不断的倒腾 也发现了问题所在 直接上图记录吧 去若依官网下载前后端
  • python12 函数进阶

    python 12 函数进阶 1 函数返回值 1 1 函数返回值 什么是函数返回值 返回就是从函数内部传递到函数外部的数据 python中的每个函数都有可以传递一个数据到函数的外部 如何确定一个函数的返回值 怎么在函数的内部传递到函数的外部
  • 【若依】开源框架学习笔记05 - 角色权限

    文章目录 一 概述 二 功能实现 1 使用方式 2 Spring Security 配置 3 权限处理逻辑 一 概述 本文主要整理了若依框架中角色权限 即菜单权限 的功能实现 页面功能位于 系统管理 gt 角色管理 gt 修改 角色权限一般
  • PostgreSql服务器的配置

    PostgreSQL最早是由UC Berkley大学计算机系开发的 当初由 Michael Stonebraker 教授领导的 Postgre 项目 是由高级防务研究项目局 Defense Advanced Research Project
  • 硬盘读写测试软件搜集

    一 diskspd Diskspd 是一个微软开源的磁盘性能基准测试工具 其基于命令行界面 有非常多的测试参数可用 很强大 名称 内容 开发语言 C 界面框架 无 在cmd中执行命令 代码量 1万行 支持系统 Windows 官网地址 ht
  • 相亲数据可视化分析系统

    前言 本文用python按城市寻找爬取 分析和保存了珍爱网上相亲男女的征婚信息 然后进行数据可视化分析 作者水平不高 第一次写文章 如果有错误 还望各位大佬指出 谢谢 一 爬取 分析并保存数据 1 爬取数据 分析网址可知 最终地址由基本网址
  • 万兴科技WondershareFilmora焕新上线已率先接入ChatGPT母公司OpenAI相关服务

    AIGC加速布局 近日 创意软件A股上市公司万兴科技 300624 SZ 旗下视频创意软件Wondershare Filmora焕新上线 新版本全新接入ChatGPT母公司OpenAI相关服务 率先在视频创作领域集成AIGC新技术 另据介绍
  • perf 性能调试

    perf 是 linux 系统调试工具之一 可以以一定采样频率 默认 4000Hz 监测指定进程中函数运行情况 从而分析程序的性能瓶颈 进而针对性优化 工具安装 perf 并不是 linux 系统默认自带的 需要安装 linux tools
  • css中div和spand,layout - DIV's vs. Tables or CSS vs. Being Stupid - Stack Overflow

    CSS may not be a religion but it is how browsers interpret HTML for layout Like it or not all modern browsers use some v
  • Qt帮助系统的制作

    原文链接Qt帮助系统的制作 Qt的帮助系统很好看 观察自带的帮助都是HTML格式 当然最好的方法是使用QtWeb模块 但好多Qt版本不支持啊 想到QTextBrowser可以显示图片啥的 一阵乱撸终于搞定 分享之 系列目录 本文是系列教程