第一章 开始
· Hello Qt
· 建立连接
· 物件布局
· 使用参考手册
这一章向你展示了如何将基本的 C++ 与 Qt 提供的功能结合起来创建一些图形用户界面 (GUI) 应用程序。同时还介绍了 Qt 两个重要思想:“信号与插槽”和布局。在第二章中,我们将进行更深入的讲解,第三章,我们将开始创建一个更实用的应用程序。如果你已经了解了一些 Java 或者 C# ,但是仅有有限的 C++ 编成经验,你或许想要从阅读附录 B 中提供的 C++ 的介绍。
Hello Qt
让我们以一个非常简单的 Qt 程序开始。首先,我们要一行一行的研究一下它的代码,然后,我们将看一下如何来编译和运行这个程序。
1 #include <QApplication>
2 #include <QLabel>
3 int main(int argc, char *argv[])
4 {
5 QApplication app(argc, argv);
6 QLabel *label = new QLabel("Hello Qt!");
7 label->show();
8 return app.exec();
9 }
第一行和第二行包含了 QApplication 和 QLabel 这两个类的定义。每个 Qt 类都有一个与类的定义文件同名(包括大小写)的头文件。
第5行创建了一个 QApplication 类的对象实例来管理整个程序作用域内的资源。QApplication 的构造函数要求argc 和 argv 参数,因为 Qt本身有少许自己的命令行参数。
第六行创建了一个用来显示 "Hello Qt!" 的 QLabel 物件。在 Qt 和 Unix 的术语学中,一个物件是一个用户接口中的视觉元素。这个术语源于“窗口配件(window gadget)” 等同于 Windows 术语学中的“控件(control)”和“容器(container)”。按钮、菜单、滚动条和框架都是物件 (widget) 的例子。物件(widget) 可以包含其它物件 (widget);比如,一个应用程序窗口通常包含一个 QMenuBar,一些 QToolBar, 一个 QStatusBar 和一些其它物件。大多数应用程序以一个 QMainWindow 或 QDialog 作为窗口,但是 Qt 有很大的灵活性,任何物件都可以作为一个窗口。在这个例子中 QLabel 物件就是应用程序窗口。
第7行使得标签可见。物件总是隐藏创建的,因此我们可以在显示它们之前配置它们,以此来避免有任何失误。
第8行将应用程序的控制权交给 Qt。这时候,程序进入事件循环。这是一种程序等待用户行为的标准模式,比如,鼠标点击和键盘按键。用户行为产生事件(也叫“消息”),程序可以响应此事件,通常是执行一个或多个函数。比如,当用户点击一个物件,将产生一个“按下鼠标”和一个“松开鼠标”事件。在这方面,GUI 应用程序和通常处理输入,产生输出并自动结束的批处理程序有很大的不同。
为了简单起见,我们不打算在 main() 函数结束时调用 delete 来释放 QLabel 对象。这点内存泄漏对于这样一个小程序来说并无太大损害。因为泄漏的内存会在程序结束时由操作系统自动收回。
图1.1 Hello on Linux
现在可以试着在你自己的机器上运行这个程序。首先,你需要安装 Qt 4.1.1 (或者更新的 Qt 4 发行版本),这一步在附录 A 中有解释。从现在开始,我们假定你已经正确的安装了 Qt 4 并且 Qt 的可执行目录 bin 已经包含进 PATH 环境变量(在 Windows 上,这一步在 Qt 安装时由安装程序自动完成)。此外,你还需要 hello 的文件夹内的 hello.cpp 的程序源代码文件,你可以手工创建 hello.cpp 文件,或者从本书的配套 CD 中拷贝,这个文件可以从/examples/chap01/hello/ 目录下找到。
在命令行提示符下, 转到 hello 目录下,然后输入以下命令:
qmake -project
来创建一个平台独立的工程文件 (hello.pro),然后输入:
qmake hello.pro
从项目文件创建一个针对特定平台的 makefile 文件。
键入 make 命令编译此程序。在 Windows 下键入 hello,或者在 Unix 键入 ./hello来运行程序,或者在 Mac OS X 下打开 hello.app 来执行程序。结束程序,你可以点击窗口标题栏上的关闭按钮结束程序的运行。
如果你的操作系统是 Windows 并且安装的是 Qt 的开放源代码版本和 MinGW 编译器,你或许会希望创建一个到已经正确设置了Qt所有环境变量的 DOS 提示符窗口的快捷方式。如果你打开了这个窗口,你可以像上面描述的一样在这个窗口里调用 qmake 和 make 来编译 Qt 应用程序。生成的可执行文件被放在应用程序的 debug 或 release 文件夹内,比如:
C:qt-bookhelloreleasehello.exe.
如果你用的是微软的 Visual C++ 编译器,你应该运行 nmake 来代替 make。或者,你可以键入以下命令由 hello.pro 文件创建一个 Visual Studio 工程文件,
qmake -tp vc hello.pro
然后在 Visual Studio 里编译它。若你是在 Mac OS X 平台上用 Xcode,你可以用以下命令来生成一个 Xcode 工程文件。
qmake -spec macx-xcode
在进入下一个例子之前,先让我们来娱乐一下:用下面这行
QLabel *label = new QLabel("<h2><i>Hello</i> "
"<font color=red>Qt!</font></h2>");
替换这一行
QLabel *label = new QLabel("Hello Qt!");
然后重新编译这个程序。就像这个实例展示的那样,用一些简单的 HTML 风格的格式化代码生成一个 Qt 应用程序用户界面是非常简单的。
|