dodo's blog

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  3 Posts :: 0 Stories :: 18 Comments :: 0 Trackbacks

常用链接

留言簿(10)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

第一章,Qt概述 (第一部分完)



·第一个Qt程序:Hello Qt
·连接信息槽
·布置器件
·使用开发文档

第一个Qt程序:Hello Qt

让我们从一个非常简单的Qt程序开始。我们将会把它一行一行地拆解,最后我们将会学到如何编译和运行它。

1#include <QApplication>
2#include <QLabel>
3int 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}


第1行和第2行包含了QApplication和QLabel类的定义。每一个Qt类的定义都由一个与其类名相同的头文件包含。

第5行创建了一个QApplication对象以管理应用程序资源。因为Qt支持命令行,QApplication的构造函数需要argc和argv参数。

第6行创建了一个显示"Hello Qt!"的QLabel器件(widget)。在Qt和Unix术语当中,器件指的是用户界面上的可视元素,这在Windows下被成为控件(control)和容器(container)。按钮、菜单、滚动条和框架都是器件之一。一个器件还可以包含其他器件,比如一个应用程序的窗口器件通常包含了QMenuBar,QToolBars,QStatusBar等器件。大多数应用程序使用QMainWindow或QDialog作为窗口器件,但是在Qt中任何器件都能作为一个窗口,在本例中,应用程序窗口是一个QLabel。

第7行使创建的Label显示出来。我们一般要对器件进行设置后才会显示他们,所以为了避免闪烁,器件在刚创建时总是隐藏的。

第8行使Qt应用程序开始运转。从这个函数调用开始,程序会进入所谓的事件循环(event loop)。程序将会静待用户的操作,比如鼠标单击和键盘按键。程序通过执行一个或多个函数来响应用户操作产生的事件(也被称作“消息”)。比如用户在单击一个器件后将会产生一个鼠标按和下一个鼠标弹起的事件。从这点上看,GUI程序与通常接收数据、输出数据然后不需要人们干涉就终止的批处理程序完全不同。

为了简便,我们并没有在main()函数的最后delete掉QLabel对象。这样的内存泄露无伤大雅,并且泄露的内存最后将在程序终止时被操作系统回收。(译者注:我看的Qt例程里面貌似都没删……)

现在我们来看看如何在自己的机子上编写一个Qt程序。首先,你需要安装Qt 4.1.1(或更新的Qt4版本),具体的安装细节见附录A(本文略)。

附:Qt4.4.0 下载地址:http://www.qtcn.org/bbs/read.php?tid=1075
            安装方式:http://www.qtcn.org/bbs/read.php?tid=4853

我们将源代码保存为hello.cpp

在命令行下输入

qmake -project

以上创建了平台相关的工程文件。然后输入

qmake hello.pro

以上创建了给指定平台使用的makefile。

最后输入make即可编译和链接程序了。要运行程序,在Windows下输入hello,在Unix下为./hello,在Mac OS X下为open hello.app。要关闭该程序则单击窗口标题栏上的关闭按钮。


图1.1,Hello on Qt


[*]如果出现包含<QApplication>的错误,说明你使用的Qt是较老的版本,确认你的Qt版本在4.0之后。

如果你在使用Windows并且已经安装了Qt开源版和MinGW编译器,你会有一个已经为Qt配置好环境变量的命令行快捷方式。如果使用此命令行,你可以通过上面所说的qmake和make命令正确编译一个Qt程序。生成的可执行文件将会保存在工程所在目录的debug和release目录下,比如C:\qt-book\hello\release\hello.exe。

如果你在使用Visual C++,你要执行nmake而不是make。或者你可以通过以下的命令来创建一个Visual Studio工程文件:

qmake -tp vc hello.pro

然后在Visual Studio中编译工程。

如果你在使用Mac OS上的XCode,你可以通过以下命令生成一个XCode的工程:

qmake -spec macx-xcode

最后,让我们在进入下一个例子之前轻松一下,将:

QLabel *label = new QLabel("Hello Qt!");
换成:
QLabel *label = new QLabel("<h2><i>Hello</i> "
"<font color=red>Qt!</font></h2>");
然后重新编译程序。
图2.2,一个有着HTML风格的Label










该例子说明,很容易用一些HTML风格的元素增强Qt的界面。
 
posted on 2008-05-14 14:56 多多 阅读(1416) 评论(2)  编辑 收藏 引用 所属分类: C++ GUI Programming with Qt4

Feedback

# re: C++ GUI Programming with Qt 4: 第一章,Qt概述,第一个Qt程序:Hello Qt 2008-05-21 20:15 Sam
Good  回复  更多评论
  

# re: C++ GUI Programming with Qt 4: 第一章,Qt概述,第一个Qt程序:Hello Qt 2009-05-10 21:35 odod
学了~~~  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理