Qt文档系统分析(一)

http://hi.baidu.com/cyclone/blog/item/a8b5277f247d3f0628388aa0.html

只要打开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什么我们都没设置。

第 1 章 系统介绍 4 1.1 系统介绍 4 1.2 系统相关对象介绍 4 1.3 系统设备介绍 4 第 2 章 现有系统分析 4 第 3 章 系统相关人员(系统)愿望列表 4 3.1 部门,人员组织结构图 4 3.2 投资人愿望列表 4 3.3 管理部门愿望列表 5 3.3.1 管理流程 5 3.3.2 质量监控 5 3.3.3 统计与分析 5 3.4 维护部门愿望列表 5 3.5 操作人员与服务人员愿望列表 5 3.5.1 操作人员组 5 3.5.2 操作人员组二 5 3.6 外界系统愿望列表 6 3.6.1 外界系统 6 3.6.2 外界系统二 6 第 4 章 系统功能定义 6 4.1 系统功能分类说明 6 4.2 功能分类功能定义 7 4.2.1 使用者 7 4.2.2 业务流程 7 4.2.3 功能定义 7 4.3 功能分类二功能定义 7 4.3.1 使用者 7 4.3.2 业务流程 7 4.3.3 功能定义 7 第 5 章 系统接口定义 7 5.1 接口规范与标准 7 5.2 第种类型接口定义 7 5.2.1 适用范围定义 7 5.2.2 功能要求 8 5.2.3 实现方式 8 5.3 第二种类型接口定义 8 5.3.1 适用范围定义 8 5.3.2 功能要求 8 5.3.3 实现方式 8 第1章系统介绍 1.1系统介绍 介绍系统功能和适用范围,系统的使用周期和建设周期。 1.2系统相关对象介绍 介绍和系统有关人,机构,系统。 1.3系统设备介绍 介绍系统内的设备或设备分类,附设备连接图。 第2章现有系统分析 分析现有系统或目前局部使用的软件的功能和缺陷。 第3章系统相关人员(系统)愿望列表 列举和系统有关系的人和系统对本系统的期望和各自要求的功能。对于每个部门和用户群需要给予适当分类,分析不同用户群和同用户群内不同用户各自的职责和对系统的期望。 3.1部门,人员组织结构图 描述与系统相关的用户群的部门和人员组织,需要标明上下级关系和人员的组织结构。 3.2投资人愿望列表 3.3管理部门愿望列表 3.3.1管理流程 3.3.2质量监控 3.3.3统计与分析 3.4维护部门愿望列表 3.5操作人员与服务人员愿望列表 3.5.1操作人员组 3.5.1.1工作职责 3.5.1.2愿望列表 3.5.2操作人员组二 3.5.2.1工作职责 3.5.2.2愿望列表 3.6外界系统愿望列表 分析系统之外的其他系统对功能的要求。 3.6.1外界系统 3.6.1.1系统功能与作用 分析外界系统和本系统间的联系 3.6.1.2系统互操作方式 3.6.2外界系统
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值