Qt文档系统分析(解释Qt文档的生成工具与过程)
写在前面
只要打开Qt Assistant或Qt Creator的Help,或是打开在线版的 http://doc.qt.nokia.com ,Qt的漂亮的文档就会呈现在我们眼前。
而且 Qt的文档,长期以来似乎都是Qt的一大优势。比如大家在比较Qt和Wx,或比较Qt和GTK+时,Qt的文档似乎总是更胜一筹。
那么,这些文档时怎么生成的呢?
幕后英雄们
当然,这些文档幕后的应用是Qt的开发人员。我们对他们表示感谢。
但我们这儿关注的英雄呢?是生成这些文档的软件:
- qdoc3
- qhelpgenerator
- qcollectiongenerator
先简单介绍一下它们的作用:(个人理解,不当请指正)
- qdoc3 工作时需要一个配置文件 xxx.qdocconf (Qt Document Configure)
- 根据该文件的设置,将源码代码中的各种符合规则的注释提取出来,生成一系列的 .html 文件
- 如果只用来在线显示,这一步就足够了
- qhelpgenerator 工作时需要一个配置文件 xxx.qhp(Qt Help Project)
- 根据该文件设置,将一系列的 html 文件变成 .qch 文件
- 如果只是要求生成的用文件能通过 assistant 查看,到这一步也足够了
- qcollectiongenerator 工作时需要一个配置文件 xxx.qhcp(Qt Help Collection Project)
- 该文件可以管理一系列的 .qch 文件。比如我们装完Qt后就有: qt.qch , assistant.qch, qmake.qch 等
- 该文件可以对 assistant 显示的外观进行定制
考虑到这些东西内容太多了,主要关注下qdoc3吧
一个小例子
先看一个例子,我们先编写一个很小很小的Qt程序,
先看first.pro文件,其实没什么看的,是吧
TARGET = first
SOURCES += main.cpp widget.cpp
HEADERS += widget.h
看一下我们的Widget类(其实是一个空类),下面是头文件 widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
public slots:
void setValue(double v);
signals:
void signal1();
void signal2(const QString&);
};
#endif // WIDGET_H
这是类的实现 widget.cpp
#include "widget.h"/*!
\class Widget\brief The Empty Widget Class provides nothings.
The Empty Widget is a widget that
\sa QWidget
*//*!
\fn void Widget::signal1()This signal is emitted when .
*//*!
\fn void Widget::signal2(const QString&)This signal is emitted when
*//*!
Creates a Widget Window.
*/
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
}/*!
Destroys this Widget.
*/
Widget::~Widget()
{}
/*!
Set a new value \a v.
*/
void Widget::setValue(double v)
{
}
再看一下 main.cpp 文件
/*!
\page index.html
\title First Exmaple\section1 Description
This is a demo program.\section1 Class
\list
\o \l Widget
\o second
\o third
\endlist*/
#include <QtGui/QApplication>
#include "widget.h"int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();return a.exec();
}
万事具备,还欠什么呢?注意我们前面提到 qdoc3 需要什么来着?
对了,再创建一个 first.qdocconf 文件就好了
project = First
description = First QDoc Exmaple
outputdir = html
headerdirs = .
sourcedirs = .
一切准备妥当了,运行一下试试吧
qdoc3 first.qdocconf
怎么样,看到效果了吧?什么?不如Qt自带的手册好看,当然,网页头、网页尾、css什么我们都没设置。
图片:qdoc_first.jpg
Qt文档系统分析(解释Qt文档的生成工具与过程)的更多相关文章
- Qt 窗口属性简介之Qt::WA_DeleteOnClose
一.简述 今天介绍一个简单的窗口属性——Qt::WA_DeleteOnClose. 在正常创建窗口后,我们一般会调用close()方法来关闭窗口,这里我们看一下Q助手中关于close()方法的介绍. ...
- PyQt(Python+Qt)学习随笔:PyQt帮助文档导入assistant后离线查阅
在按照<第15.6节 PyQt5安装与配置>完成PyQt5及PyQt5-tools的安装后,发现Qt Designer中的帮助不能使用,报错: 按照<PyQt学习随笔:Qt Desi ...
- Nginx配置文档具体解释
Nginx的配置文档具体解释.在这儿做个总结,以便以后使用的时间查看. 下面大部分自己整理.部分来自參考 #设置用户 #user nobody; #启动进程数(一般和server的CPU同样) #能 ...
- 文档生成工具——Doxygen
参考: 1.https://blog.csdn.net/liao20081228/article/details/77322584 2.https://blog.csdn.net/wang150619 ...
- 【C#附源码】数据库文档生成工具支持(Excel+Html)
[2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...
- 微软开源全新的文档生成工具DocFX
微软放弃Sandcastle有些年头了,微软最近开源了全新的文档生成工具DocFX,目前支持C#和VB,类似JSDoc或Sphinx,可以从源代码中提取注释生成文档之外,而且还有语法支持你加入其他的文 ...
- DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...
- .NET平台开源项目速览(4).NET文档生成工具ADB及使用
很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧 ...
- (转)Doxygen文档生成工具
http://blog.csdn.net/lostaway/article/details/6446786 Doxygen 是一个支持 C/C++,以及其它多种语言的跨平台文档生成工具.如同 Java ...
随机推荐
- Oracle数据库分页查询的几种实现方法
没有Sql Server有top那么好用,但是Oracle含有隐藏的rownum列可以灵活使用,使实现分页效果,pageSize默认10行 方法一: select * from test where ...
- 手动安装huson插件的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 首先到jenkins-ci.org下载插件,地址为:http://updates.jenkins-ci.org/dow ...
- hadoop 3.x 集群/单个节点的启动与停止
1.单个节点操作 启动|停止单个节点 hdfs --daemon start|stop datanode hdfs --daemon start|stop namenode 启动|停止单个节点的Nod ...
- Android studio怎么创建Android虚拟机?
进行Android studio中进行开发app应用的情况,如果在进行调式app的应用的情况下,没有真机手机机器是没有办法调式的,那么只能通过Android studio中sdk提供虚拟机进行调式ap ...
- 在WPF窗体中重绘
原文:在WPF窗体中重绘 写这篇主要是为了验证任何元素自身都具备绘图功能. 在默认Window中重写OnRender方法 protected override void OnRender(Draw ...
- Akka边学边写(1)-- Hello, World!
Akka Akka是什么呢?直接引用Akka站点上面的描写叙述吧: Akka is a toolkit and runtime for building highly concurrent, dist ...
- ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core MVC 设计模式 上一章节中,我们提到 ASP.NET Co ...
- c#如何获得ModelVisual3D中MeshGeometry3D对象
原文:c#如何获得ModelVisual3D中MeshGeometry3D对象 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671 ...
- 带农历日历的DatePicker控件!Xamarin控件开发小记
原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePi ...
- centos6.5安装apache2.x并更改默认80port
因为现在nginx它已成为反向代理软件的主流.因此,linuxserver在系统.我们几乎总是安装nginx东方的,这使在同一时间使用apache带来了麻烦.因为apache它用于通过缺省80port ...