Qt是一个跨平台的C++图形用户界面程序框架。它为应用程序开发者提供建立艺术级图形用户界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。
在Qt程序开发过程中,除可以通过手写代码实现软件开发功能外,还可以通过Qt的GUI界面设计器进行界面的绘制与布局,该工具提供了Qt的基本可绘制窗口组件。在设计器中直接拖拽窗口部件,能够高效、快速地实现GUI界面的是设计,所见即所得。
虽然Qt库起初只是一个C++图形库,但是经过多年的演化,它已经成为一个功能丰富的通用C++类库。它集成了数据库、OpenGL、多媒体、脚本、XML、正则表达式、WebKit等模块等,其内核部分也加入了进程间通信、多线程等模块。
作为一个成熟的GUI框架,它定义了多种功能丰富的控件,实现了事件处理机制,可以实现普通菜单、上下文相关菜单、拖曳、可停靠工具栏等功能。Qt发明了“信号与槽”机制,各控件利用这一机制发送、处理消息,大幅降低了各控件的耦合度。其他GUI框架常常使用回调函数来实现控件之间的通信,相比之下,信号与槽机制更加安全。Qt库提供的Graphics/View框架以及Model/View框架可令程序员编写少量的代码,即可显示、编辑应用程序所要处理的数据。
整个Qt库支持Unicode编码,因而一个Qt应用程序可以轻易地同时显示英文、中文、日文、俄文等多种Unicode编码所支持的语言。Qt软件包还提供了诸如Qt Linguist这样的工具,便于程序员开发国际化软件产品。
Qt库的数据库模块内含以下数据库管理系统的驱动软件:Oracle,Microsoft SQL Server,Sybase Adaptive Server,IBM DB2,PostgreSQL,MySQL,Borland Interbase,SQLite,以及其他支持ODBC(Open Database Connectivity)接口的数据库管理系统。这意味着可以使用Qt访问各种平台上的多种数据库管理系统。除了使用SQL语句直接访问数据库外,Qt还提供了一些与数据库密切相关的控件,以简化数据的访问过程。
Qt库的XML模块包含了能够读取、解析、处理XML文档的类。该模块支持SAX(Simple API for XML)接口以及DOM(Document Object Model)规范。该模块易用、强大、功能完备。Qt库还允许应用程序使用正则表达式搜索、解析文档,或者在一个数据集中筛选符合某种条件的数据项。
Qt库集成了浏览器引擎WebKit,该引擎能够从服务器下载、解析、渲染、显示网页。由于该引擎执行速度快、运行稳定,已被用于Safari、Google Chrome等浏览器中。利用这个引擎,Qt应用程序可以在其界面中显示服务器网页。不但如此,Qt令WebKit引擎将网页的结构以及其中一些对象的细节呈现给Qt应用程序,使得程序中的其他控件可以直接和这些对象进行交互。这意味着Qt应用程序在显示网页时可以将一些Qt控件嵌入到网页中,也可以使用“信号与槽”机制,使得网页中某些对象的状态发生变化时,能够触发本地程序中某些控件的槽函数。