入门Qt——hello, world
2008-06-15 17:18
357 查看
注:本文参考(译)自Qt帮助文档, Qt Assistant, Qt4.4:Qt Tutorial 1 - Hello World! 和其他所有编程入门一样,第一个程序都是简单的 hello, world。本程序是一个最小的Qt程序,仅包含了启动和运行部分。下面的图片是程序运行的屏幕截图。
下面是本程序的完整源代码:
逐行分析代码:
本行代码包含了 class QApplication 的定义. 每个Qt GUI 应用程序都必须正确的指定一个QApplication 对象. QApplicaton 负责管理程序范围内的资源,如默认的字体 和 鼠标指针等.
这行代码包含了 class QPushButton 的定义. 每个类都是Qt 公有 API 的一部分, 被定义在同名头文件中. QPushButton 是一个用户可以按下/松开的 GUI 按钮. 它自己管理自己的外观和效果, 和其他所有的 QWidget 一样. 一个 widget 就是一个能够处理用户输入、绘图的用户接口对象. 程序员可以修改它们的整体外观、效果和许多辅助属性(如颜色) 以及 widget 的内容. 一个 QPushButton 可以显示文本 或者 一个图标(QIcon).
main() 函数是程序的入口点. 几乎总是这样,在使用Qt时,main() 函数仅仅被用来完成一些初始化工作在将控制权交给Qt前. 参数 argc 为命令行参数个数,参数 argv 为指向命令行参数的数组. 这是一段标准C++代码.
对象 app 是 程序的 QApplication 实例. 在这行代码被创建. 我们将 argc 和 argv 通过 QApplication 的构造函数船体给了它, 因此它便能处理规定的命令行参数(如X11系统下的 -display). 所有的命令行参数都会被 Qt 识别,并从 argv 中移除, 相应的 argc 也会被减少. 可以参见 QApplication::arguments() 文档详细说明. QApplication 对象必须在在任何 Qt GUI 相关特性的使用前创建.
在这里, 声明了 QApplication 后, 迎来了第一行 GUI 相关代码: 一个按钮被创建. 按钮被设置显示文本 "Hello world!". 由于我们没有显式的为它指定 父窗体(QPushButton构造函数的第二个参数), 按钮将会拥有一个带有窗体框和标题栏的窗体. 按钮的大小被确定为默认显示文本的大小. 我们可以调用 QWidget::move() 给 widget 在屏幕上指定一个特定的位置, 但是在这里我们让系统选择了一个位置.
当一个 widget 被创建时是不可见的. 你必须调用 QWidget::show() 使得它可见.
在这里 main() 函数将控制权交给了 Qt. QCoreApplication::exec() 会直到应用程序退出时返回.(QCoreApplication 是 QApplication 的基类. 它实现了 QApplication 的核心功能, 没有 GUI 功能 并且 可以被用在开发没有 GUI 的应用程序里.) 在 QCoreApplication::exec() 中, Qt 接收并且处理来自 用户 和 系统 的事件 并将它们传递给恰当的 widget 处理. 你现在可以尝试编译、运行这个程序. 这个例子存在于 Qt 的 examples/tutorials/tutorial 目录下. 将会在你编译Qt 的时候自动被编译. 如果你是动手自己写的代码, 你需要按照以下指令操作: 要编译 C++ 应用程序,你需要创建一个 makefile 文件. 最简单的创建 makefile 方法就是使用 Qt 自带的 qmake 编译工具. 如果你已经将 main.cpp 文件保存于一个空目录下,你所需要做的如下:
第一条命令告诉 qmake 创建一个工程文件 (.pro 文件). 第二条命令告诉 qmake 创建一个基于 工程文件 的平台相关的 makefile. 你现在可以试着 敲入 make(或者 nmake 如果你使用Visual Studio) 并且运行你的第一个 Qt 应用程序!
后记: 平时自己看也就罢了,没想到要翻译写出来既然如此困难! 感觉词语不通顺,目前国内 Qt 相关的中文资料较少,很多人又不愿意看 英文的, 举手之劳,希望既能够自己练练,也能够给初学者或者希望学习者提供点资料 :)
下面是本程序的完整源代码:
1: #include <QApplication>
2: #include <QPushButton>
3: int main(int argc, char *argv[])
4: {
5: QApplication app(argc, argv);
6: QPushButton hello("Hello world!");
7: hello.show();
8: return app.exec();
9: }
逐行分析代码:
1: #include <QApplication>
本行代码包含了 class QApplication 的定义. 每个Qt GUI 应用程序都必须正确的指定一个QApplication 对象. QApplicaton 负责管理程序范围内的资源,如默认的字体 和 鼠标指针等.
2: #include <QPushButton>
这行代码包含了 class QPushButton 的定义. 每个类都是Qt 公有 API 的一部分, 被定义在同名头文件中. QPushButton 是一个用户可以按下/松开的 GUI 按钮. 它自己管理自己的外观和效果, 和其他所有的 QWidget 一样. 一个 widget 就是一个能够处理用户输入、绘图的用户接口对象. 程序员可以修改它们的整体外观、效果和许多辅助属性(如颜色) 以及 widget 的内容. 一个 QPushButton 可以显示文本 或者 一个图标(QIcon).
3: int main(int argc, char *argv[])
4: {
main() 函数是程序的入口点. 几乎总是这样,在使用Qt时,main() 函数仅仅被用来完成一些初始化工作在将控制权交给Qt前. 参数 argc 为命令行参数个数,参数 argv 为指向命令行参数的数组. 这是一段标准C++代码.
5: QApplication app(argc, argv);
对象 app 是 程序的 QApplication 实例. 在这行代码被创建. 我们将 argc 和 argv 通过 QApplication 的构造函数船体给了它, 因此它便能处理规定的命令行参数(如X11系统下的 -display). 所有的命令行参数都会被 Qt 识别,并从 argv 中移除, 相应的 argc 也会被减少. 可以参见 QApplication::arguments() 文档详细说明. QApplication 对象必须在在任何 Qt GUI 相关特性的使用前创建.
6: QPushButton hello("Hello world!");
在这里, 声明了 QApplication 后, 迎来了第一行 GUI 相关代码: 一个按钮被创建. 按钮被设置显示文本 "Hello world!". 由于我们没有显式的为它指定 父窗体(QPushButton构造函数的第二个参数), 按钮将会拥有一个带有窗体框和标题栏的窗体. 按钮的大小被确定为默认显示文本的大小. 我们可以调用 QWidget::move() 给 widget 在屏幕上指定一个特定的位置, 但是在这里我们让系统选择了一个位置.
7: hello.show();
当一个 widget 被创建时是不可见的. 你必须调用 QWidget::show() 使得它可见.
8: return app.exec();
9: }
在这里 main() 函数将控制权交给了 Qt. QCoreApplication::exec() 会直到应用程序退出时返回.(QCoreApplication 是 QApplication 的基类. 它实现了 QApplication 的核心功能, 没有 GUI 功能 并且 可以被用在开发没有 GUI 的应用程序里.) 在 QCoreApplication::exec() 中, Qt 接收并且处理来自 用户 和 系统 的事件 并将它们传递给恰当的 widget 处理. 你现在可以尝试编译、运行这个程序. 这个例子存在于 Qt 的 examples/tutorials/tutorial 目录下. 将会在你编译Qt 的时候自动被编译. 如果你是动手自己写的代码, 你需要按照以下指令操作: 要编译 C++ 应用程序,你需要创建一个 makefile 文件. 最简单的创建 makefile 方法就是使用 Qt 自带的 qmake 编译工具. 如果你已经将 main.cpp 文件保存于一个空目录下,你所需要做的如下:
qmake -project qmake
第一条命令告诉 qmake 创建一个工程文件 (.pro 文件). 第二条命令告诉 qmake 创建一个基于 工程文件 的平台相关的 makefile. 你现在可以试着 敲入 make(或者 nmake 如果你使用Visual Studio) 并且运行你的第一个 Qt 应用程序!
后记: 平时自己看也就罢了,没想到要翻译写出来既然如此困难! 感觉词语不通顺,目前国内 Qt 相关的中文资料较少,很多人又不愿意看 英文的, 举手之劳,希望既能够自己练练,也能够给初学者或者希望学习者提供点资料 :)
相关文章推荐
- QT入门笔记--Hello,World
- 入门Qt——hello, world
- 入门Qt——hello, world
- 入门Qt——hello, world
- [C#从入门到放弃]程序生命起点--Hello World
- 我的第一个Qt程序:使用Qt creator和Qt designer完成"HelloWorld"和计算圆面积的程序设计
- DWR入门教程之HelloWorld
- Android入门—— Hello, world
- Mybatis 快速入门之Hello World
- qt-designer使用教程1--HelloWorld.txt
- Android入门之编写HelloWorld.apk
- 百度地图API入门——(2)第二个超简单应用:Hello, World!
- linux 入门 之 hello, world !
- Qt入门之二——Hello Qt!
- QT Hello World
- QT Hello World 程序
- 使用命令行编译QT helloworld 项目
- MiniUI快速入门教程(二)编写第一个MiniUI程序:Hello, world!
- Android开发入门:Hello,World!
- Maven安装与Maven HelloWorld入门实例