Hello Qt(在Linux下编写运行Qt程序)

From: http://www.yafeilinux.com/?p=763

<一>Hello Qt小试牛刀!

说明:我们需要在Linux下已经安装了Qt。

1.下面是整个程序的详细介绍:

#include <QApplication>

 //第一行是定义一个应用程序类<QApplication>的头文件,所有Qt图形化应用程序都包含在此头文件,它包含了Qt图形化应用程序的各种资源、基本设置、控制流以及事件处理等,如果是Qt的非图形化应用程,则需包含<QCoreApplication>

#include <QLabel>

//第二行定义一个应用到的标签类<QLabel>的头文件,

int main(int argc,char *argv[])

 //主函数作为应用程序的入口,所有Qt应用程序都必须有一个主函数名,以argc和argv作为入口参数。

{

//定义一双花括符,这是程序的书写格式。       

 QApplication app(argc,argv);

 //创建一个QApplication对象,用来管理整个应用程序所用到的资源。每个Qt应用程序有且只有一个QApplication对象。argc和argv是QApplication构造函数的两个参数。支持Qt的程序处理命令行参数。       

QLabel *label = new QLabel(“Hello Qt!~”);

//创建一个显示”Hello Qt!”的QLabel标签窗口部件(window gadget简称widget)作为应用程序的窗口。应用程序窗口通常是一个包含了一个QMenuBar(Qt菜单栏)、一些QToolBar(Qt工具栏)、一个QStatusBar(Qt状态栏)以及一些其他窗口部件的窗口部件。大多数应用程序都会用QMainWindow或者一个QDialog作为它的窗口,但Qt可以用任何窗口部件作为它的应用程序窗口,这就是为什么很多人说Qt很灵活的原因。其实可以省略这样定义QLabel对象的:QLabel label(“Hello Qt!”);将QLabel标签窗口部件显示修改为lable.show();       

Label->show();

//QLable的标签窗口部件在创建的时候是被隐藏的,因此我们要调用show()函数来显示标签窗口部件       

 app.exec();

 //调用QApplication的exec()方法,将应用程序的控制权限传递给Qt,此时程序会进入事件循环状态模式,程序等待用户对其发生的动作相应。Qt将完成事件处理及显示的工作在应用程序退出时返回exec()的值。

}

2.在Linux下的命令行编辑程序:

[root@localhost root]# mkdir hello

//mkdir命令创建一个hello目录

[root@localhost root]# cd hello

//cd命令切换到刚才创建的hello目录

[root@localhost hello]# vi main.cpp

//在hello目录中用vi创建一个main.cpp文件  将下面的代码输入到main.cpp文件中,前面有介绍了,这里就不多说了

#include <QApplication>

#include <QLabel>

int main(int argc,char *argv[])

{       

QApplication app(argc,argv);       

QLabel *label = new QLabel(“Hello Qt”);       

Label->show();       

 return  app.exec();

}

3.然后在命令行编译程序:

[root@localhost hello]# qmake –project

//执行qmake –project,因为目录是hello,因此在hello目录下生成一个与平台无关的项目文件hello.pro,

[root@localhost hello]# qmake hello.pro

 //执行qmake hello.pro项目文件后,在hello目录下生成一个与平台有关的Makefile文件。

[root@localhost hello]# make

 //执行make进行编译源代码,并生成main.o目标文件及hello执行文件。

[root@localhost hello]# ./hello

//执行hello,就会弹出Hello Qt窗口,到此说明成功了 

对显示信息进一步了解,将main.cpp程序中的QLabel *label = new QLabel(“Hello Qt!”);中的Hello Qt!用html格式进行修改,修改如下: QLabel *label = new QLabel(“<h2><i>Hello</i>””<font color=red>Qt!</font></h2>”); 意思是<h2>Hello Qt</h2>显示与二号标题字体大小, html的<i></i>标签将Hello加倾斜表示,<font color=red>Qt!</font>表示将Qt!颜色设置为红色。点击QLabel标签窗口部件左上角的”X”关闭窗口,用vi命令打开main.cpp C++程序源文件,并修改文本显示的内容,然后保存退出,重新执行make命令编译源代码

[root@localhost hello]# ./hello

 //再次执行hello可执行文件,弹出的QLabel标签窗口与刚才的不同,现实了刚才的预想的效果

==============================================================================================

参考上面的内容,我实际操作了一遍。环境:Fedora12 + QTCreator2.0.1

在执行“make"时出现了错误,提示ld找不到:-lqt-mt,于是打开Makefile仔细看了下,发现里面生成的内容有问题,搜索目录中有qt3.3的目录,于是想到可能是生成的Makefile有问题,而这个文件刚好是由qmake来生成的,因此推断所调用的qmake版本不对。


仔细看看Fedora12就会发现,在系统装好后,默认会安装上QT3和QT4的,而且环境变量如QTDIR, QTINC的指向都不是QTCreator目录下的。修改前的环境变量为:

QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
QT_IM_MODULE=xim
QTLIB=/usr/lib/qt-3.3/lib
PATH=/opt/oracle/product/11.2.0/db_1/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/zcm/bin

修改后的环境变量为(我电脑上qtcreator的安装目录为:/opt/qtsdk-2010.05):

[zcm@qt #160]$cat qt.config
QTDIR=/opt/qtsdk-2010.05
QTINC=/opt/qtsdk-2010.05/qt/include
QT_IM_MODULE=xim
QTLIB=/opt/qtsdk-2010.05/lib
PATH=/usr/lib/qt4/bin:/opt/oracle/product/11.2.0/db_1/bin:/opt/qtsdk-2010.05/qt/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/zcm/bin


配置好上面的环境变量后,需要重新生成Makefile,即执行:qmake hello.pro

最后,执行make生成hello可执行文件,测试运行:./hello


仔细比较下下就会发现:不同版本qmake生成的Makefile内容是不同的,这就是利用makefile生成可执行文件时会失败的原因了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值