(1)No.1 qmake
相信编写过Makefile的开发人员,随着工程中源码的级数递增和以类型、功能、模块组织源码的子目录的增多,都不愿意重复机械地手工编写这个工程管理文件。手写Makefile比较困难也容易出错。还没有编写过Makefile,甚至还不知道Makefile为何物的开发人员,也不用为此烦心,qmake可以方便地基于一个工程文件,生成不同平台下的Makefile。qmake关注编译器和处理器平台的依赖性,开发人员不用再手写针对不同编译器和不同处理器平台的Makefile,而可以花更多的精力在程序的设计上。
(2)No.2 designer
Qt的界面设计师,它是一个所见即所得的界面绘制工具。通过这个工具我们可以在后面的操作中方便地通过鼠标的拖曳来布局和设计软件界面。
(3)No.3 assistant
它是一个提供了400多种图形化用户界面的宏大的C++类库。如果没有良好的帮助文件和在线文档阅读器对于开发人员来说是多么糟糕的一件事情呀,然而,Qt assistant工具的出现,避免了这种糟糕事情发生在Qt开发人员身上。它做的还远远不只这些,当使用assistant的时候,会发现它考虑的非常周到,可以通过类似web浏览器导航、书签和文档文件链接,还提供关键字查询服务;当开发人员需要向最终用户提供文档支持得到时候,它又是完全可定制的。
(4)No.4 uic
用户接口编译器,在designer里面绘制的软件界面可以靠这个工具生成对应的实现源码文件。它一般不需要手动执行,而是在Makefile中制定调用规则。
(5)No.5 Moc(meta-object compiler)
元对象编译器。看到编译器很容易想到gcc、g++这些Linux下常用的编译器,既然Qt包含了C++类库,用g++编译Qt程序就成了顺理成章的事情了。然而,Qt对标准C++提供了扩展,这些扩展的内容包含了后面要讲到的对象间的通信机制(信号与槽),这些是Qt特有的,用g++是无法进行语法解释的。这就需要我们的moc站出来做个中间人,把Qt的这些特殊代码翻译成C++标准语法代码,然后把翻译后的代码交给g++进行编译链接,生成最终目标。
在这里补充说明下Qt在Linux下支持的模块(组件),如下表所列:
模块名 | 模块说明 |
QtCore | 非图形化核心类,它里面涵盖的类(QThread,QChar等)可以供其他模块使用,头文件 |
QtGui | 图形化用户界面类,它涵盖了Qt下面所有的界面控件(对话框,按钮等),头文件 |
Phonon | 多媒体框架 |
Qt3Support | Qt3的兼容类,提供了由Qt3程序向Qt4程序移植的类库 |
QtDBus | 采用D-Bus总线进行进程间通讯的类,该模块仅在UNIX中用 |
QtDesigner | 扩展Qt Designer的类 |
QtHelp | 提供在线帮助的类 |
QtMultimedia | 提供底层多媒体编程的类(QAudioInput,QAudio),头文件 |
QtNetWork | 提供让用户轻松便捷构建网络程序的类(QFtp,QTcpServer等),头文件 |
QtOpenGL | 提供2D/3D图像处理接口,头文件 |
QtSql |
Qt操作SQL数据库的类 |
QtSvg | 显示和创建SVG文件的类 |
QtWebKit | 提供一个Web浏览器引擎来和Web内容进行交互,头文件 |
QtXml | 处理XML的类 |
QtXmlPatterns | 用于XML和定制数据模型的XQuery、XSLT和XPath引擎 |
QtScript | Qt的脚本引擎 |