Qt帮助系统的制作

**原文链接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程序以供下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值