qt图形用户界面编程技术入门.doc
Qt 图形用户界面编程技术入门 本文向读者介绍利用 Qt 开发图形用户界面的应用程序的入门知识。这里,我们首先介绍了如何搭建 Qt 的 开发环境,之后通过一些简单的示例程序来循序渐进地介绍 Qt 的“信号和槽”以及布局等基本概念。本文向读者介绍利用 Qt 开发图形用户界面的应用程序的入门知识。这里,我们首先介 绍了如何搭建 Qt 的开发环境,之后通过一些简单的示例程序来循序渐进地介绍 Qt 的“信号 和槽” 以及布局等基本概念。我们希望以此来帮助读者尽快地对 Qt 图形用户界面应用程序 开发有一个初步的认识,并为进一步学习打下一个良好的基础。 一、什么是 QtQt 是一个用于桌面系统和嵌入式开发的跨平台应用程序框架。它包括一个直观的 API 和一个丰富的类库,以及用于 GUI 开发和国际化的集成工具,另外它支持 Java™ 和 C++开 发。利用它,我们无须重新编写源代码,便可以构建运行在不同桌面操作系统和嵌入式设 备上的软件应用程序。借助 Qt,我们可以更快速地构建先进的用户界面:它不仅提供了丰富的标准 widgets 库,动态布局引擎等 GUI 功能,还通过集成 OpenGL® 与 OpenGL ES 提供了先进的 3D 可 视化支持,此外,它还具有强大的图形画布和 Widgets 样式表,使我们得以使用变焦、旋 转和人机互动功能构建先进的用户界面,并且能用寥寥几行代码便可快速定制自己的用户 界面。虽然 Qt 提供了许多高级功能,但千里之行,始于足下,还是让我们先从最基本的知识 开始入手吧。下面介绍如何搭建 Qt 开发环境。二、搭建 Qt 开发环境虽然 Qt 自身带有构建工具,但它是在命令行下使用的,多少有些不便。所以,我们在 此自己动手建设自己的 Qt 集成开发环境。下面介绍 Qt 开发环境的具体搭建过程。 首先,从互联网上搜索并下载 Dev-C++,安装很简单,一路回车就可以了。然后,到 Windows 系统来说,可以下载 已编译好的安装包,当前最新版为 qt-win-opensource-4.4.0-mingw.。在 Qt 安装过程中唯 一需要注意的是,当安装程序要求选择 mingw 的路径时,直接选择 Dev-Cpp 的安装路径就 行了。安装好上述两个软件后,最后还要到 下载 Qt4 For Dev-Cpp Templates,下载后将其解压到 Dev-Cpp 的 Templates 文件夹下即可。这是用于 在 Dev-Cpp 下开发 Qt 程序的模板资源。最后,把 Qt 安装目录中的\bin 目录中的动态链接库拷贝到 windows 目录下,这样当运 行编译好的 Qt 程序时,就再也不会碰到无法找到 Qt 的 DLL 的问题了。三、我们的第一个 Qt 程序迄今为止,我们已经搭建好了 Qt 的开发环境,接下来就可以编写我们的第一个 Qt 程 序。按照学习编程的老传统,一般编写的第一个程序都是一个 Hello 程序,我们也不例外。运行 Dev-C++,在其“文件”菜单中选择“ 新建” 菜单项,然后单击“ 工程”命令,出现如 下图所示的对话框: 图 1 新建 Qt 工程选择其中的“Empty Project”,以便建立一个空项目,将项目名称定为“hello”,其他选择 默认,如图 1 所思,然后单击“确定”按钮。在弹出的“Create new project” 对话框中选择工程 文件名称和保存路径,如图 2 所示。图 2 保存项目文件上面已经新建了一个空的 Qt 项目,现在为它添加一个源代码文件。在 Dev-C++的“文 件”菜单中选择“ 新建” 菜单项,然后单击“ 源代码” 命令,在弹出的确认对话框中单击“Yes” 按钮。在编辑区中录入如下代码,保存源代码文件时将其命名为 hello.cpp。#include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel(“Hello World!“); label->show(); return app.c(); } 现在,让我们来编译该程序。单击“运行” 菜单中的“ 编译” 菜单项,出现如下图所示对话框 时,说明没有出现错误,编译成功。图 3 编译成功单击“关闭” 按钮。很好,现在运行我们第一个 Qt 应用程序的时候到了,单击“运行”菜 单中的“ 运行”菜单项。来,看看我们的“ 大作” 吧!图 4 我们的 hello 程序上面演示了在集成开发环境中开发 Qt 应用程序的整个过程,下面开始介绍我们的源代 码。俗话说,万事开头难,所以我们在这里会尽可能细致地为读者讲解这些代码。 #include #include 在这个程序中,我们总共用到了两个类 QApplication 和 Qlabel,根据先声明后使用的 原则,我们在上面两行将这两个类的定义包含到我们的代码中。对 Qt 来说,它的每一个类 都有一个同名的头文件与之对应,这个类的定义就在这个头文件中。我们注意到,这两个 头文件都是以大写字母开头的,实际上类对应的头文件都是这样。int main(int argc, char *argv[])在这里,main()函数是程序的入口。在使用 Qt 的时候,main()一般只是执行一些初始 化工作,接着就把控制转交给 Qt 库,然后 Qt 库通过事件来向程序报告用户的行为。QApplication app(argc, argv);上面这行代码为 QApplication 创建了一个对象,实际上,在每一个使用 Qt 的应用程序 中都必须有一个 QApplication 对象,该对象用来管理应用程序的各种资源。一般说来,在 使用 Qt 的窗口部件被之前,要首先创建 QApplication 对象。因为 Qt 支持命令行参数,所 以这里的 QApplication 带有 argc 和 argv,用来接收入口函数从系统那里接收到的命令行变 量,以便进一步处理。QLabel *label = new QLabel(“Hello World!“);这一行创建了一个窗口部件 QLabel,我们用它来显示一则消息“Hello World!” 。按照 Qt 的术语,一个窗口部件就是用户界面中的一个可见的用户界面对象,它能够处理用户输 入和绘制图形,它相当于 Windows 的术语中的一个控件或容器。我们可以改变窗口部件的 全部观感、主要属性( 比如颜色等) 以及窗口部件的内容等。我们常见的按钮、菜单、滚动 条和框架等都属于窗口部件。窗口部件可以包含其它的窗口部件,比如应用程序窗口通常