第一章 开始(Hello Qt)

发布: 2008-05-29 22:23

第一章 开始




 




 


 



 




 


 


·         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 来执行程序。结束程序,你可以点击窗口标题栏上的关闭按钮结束程序的运行。


如果你遇到关于 <QApplication> 包含的编译器错误,可能意味着你用的是 Qt 比较早的版本。请确认你用的是 Qt 4.1.1 或者更新的 Qt 发行版本。


如果你的操作系统是 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

1.2. A label with basic HTML formatting


 


在进入下一个例子之前,先让我们来娱乐一下:用下面这行

QLabel *label = new QLabel("<h2><i>Hello</i> "

                           "<font color=red>Qt!</font></h2>");

替换这一行


QLabel *label = new QLabel("Hello Qt!");

然后重新编译这个程序。就像这个实例展示的那样,用一些简单的 HTML 风格的格式化代码生成一个 Qt 应用程序用户界面是非常简单的。


 



原文: http://qtchina.tk/?q=node/87

Powered by zexport