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生成可执行文件时会失败的原因了!

Hello Qt(在Linux下编写运行Qt程序)相关推荐

  1. linux应用程序的编写实验原理,操作系统实验 1.在linux下编写一个应用程序 联合开发网 - pudn.com...

    操作系统实验 所属分类:Linux/Unix编程 开发工具:C/C++ 文件大小:1KB 下载次数:3 上传日期:2019-05-01 20:34:21 上 传 者:烟雨南风起 说明:  1.在lin ...

  2. Linux下编译运行C程序

    代码变成可执行文件叫做编译(compile):先编译这个还是先编译那个这个(即编译的安排)叫做构建(build) 我们在Linux环境下编译C语言需要gcc. 1.配置GCC 刚装好的系统已经有GCC ...

  3. linux安装运行jmeter,Linux下安装运行Jmeter程序

    Jmeter在linux系统中运行需要安装jdk和Jmeter两个软件: 1.安装JDK 先检查系统是否有安装jdk,在linux中执行如下命令:java -version  如果返回版本信息,说明系 ...

  4. linux下后台启动切换目录,如何让Linux下后台运行的程序到前台来

    满意答案 wc34071209 2016.12.24 采纳率:53%    等级:10 已帮助:719人 linux前后台任务切换方法: 1.在Linux终端运行命令的时候,在命令末尾加上 & ...

  5. 如何在linux下编译运行c程序

    1.在终端下打开一个编辑器(我用的gedit),建立一个hello.c文件并保存, 2.关闭编辑器,在终端上输入 gcc -o hello hello.c编译c程序 3.输入./hello运行c程序

  6. 在Linux下编写运行你的第一条代码——Hello Linux

    概述: 最近刚接触Linux,也是在啃那个公认的<鸟哥的Linux私房菜>.是的,的确讲得挺好的.现在看到第10章 vim程序编辑器.虽然鸟哥不太建议我们跳着来阅读他的文章,但是我还是跳了 ...

  7. Linux下编写运行C语言程序

    1.gcc 1.c -o 1.out && ./1.out 命名 2. gcc -lm 1.c && ./a.out 使用math.h中声明的库函数还有一点特殊之处,g ...

  8. JDK下载地址、SecureCRT中JDK安装和环境配置、SecureCRT窗口编程、linux下命令运行小程序

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 下载linux版本的JDK.java SE.java EE JDK是通用的, 32位系统选Li ...

  9. Linux下编写简单的程序

    一.进入Linux 如果你第一次接触Linux,或者说之前都用Windows但现在有要求必须用Linux了,可以使用云服务器,傻瓜式教程如下: 百度阿里云/腾讯云,买买买 安装XShell 登录你的账 ...

最新文章

  1. 原生mysql的批量更新及性能测试
  2. Python看似简单的地方——关于全局变量与局部变量
  3. Toast弹不出来之谜
  4. a标签点击后变色_中国科学家研发的不退色的变色环保图料登上《科学》子刊...
  5. TensorFlow笔记(3) TensorBoard可视化
  6. 无心剑英译林清玄《永恒》
  7. 山西民生云养老认证人脸识别_民生山西APP公众号手机认证
  8. [渝粤教育] 西南科技大学 公共管理学 在线考试复习资料
  9. 2012年总结:转折、发展、把握机遇
  10. Golang gRPC实践 连载五 拦截器 Interceptor
  11. python成语接龙代码_最全的成语接龙代码(附带有网页版)
  12. 单片机MCU OTA升级技术
  13. vagrant 设置除默认工项目之外的synced_folder一个坑
  14. yyyy-MM-dd 与 YYYY-MM-dd
  15. 【服务器数据恢复】华为OceanStor服务器热备盘同步数据失败的数据恢复案例
  16. [下属谈话]管理者与下属谈话的技巧以及注意点
  17. IPV4服务器如何支持ipv6访问
  18. Windows 共享文件访问日志
  19. 孙立平:绝望比贫穷更可怕(转载)
  20. python打卡以及Linux自动运行python文件

热门文章

  1. 栅格像元做地理坐标映射后的坐标值是像元中心点还是其他位置?
  2. C#反射技术在多语言实现中的实际用处参考,让初学者学技术有个针对性【附源码】...
  3. 11种控制内容展示的JavaScript特效和技巧
  4. 医疗大数据处理流程_我们需要数据来大规模改善医疗流程
  5. 字符串操作截取后面的字符串_对字符串的5个必知的熊猫操作
  6. leetcode910. 最小差值 II(贪心)
  7. leetcode105. 从前序与中序遍历序列构造二叉树(递归)
  8. 如何使用React,TypeScript和React测试库创建出色的用户体验
  9. vue生成静态js文件_如何立即使用Vue.js生成静态网站
  10. 2017年Spring发布了30个新的Android库,值得您关注