第三章 用SDK编译出第一个在Linux下的软件界面

先创建一个工程目录“mkdir project1”,进入目录,创建main.cpp文件,编写代码如下:

代码内容暂时可以先不理解,先让程序跑起来再说。

接下来执行“qmake -project”来生成工程文件(project1.pro),然后再执行“qmake”则会根据工程文件生产Makefie,最后执行“make”编译就可以生成执行文件”project1“。经过这几个指令的执行,现在输入”ls“看一下工程目录project1的内容。

生成的执行文件名和文件目录名一样。执行这个project1程序,诞生在我们手上第一个在Linux系统里面运行的软件界面就呈现在面前了。

简单解释下代码:

main.cpp:

第1行:包含头文件QtGui;

第3行:是main函数,带两个形参;

第5行:用main传递的命令行参数(argc, argv)构造一个QApplication类的对象app,app对象负责启动Qt GUI程序的主事件循环,它从窗口系统接收并分发事件到具体的控件对象;

第6行:创建一个基础窗体对象QWidget;

第7行:使QWidget窗体显示出来;

第8行:通过QApplication类的exec()函数调用,使应用程序进入主事件循环并等待,直到exit()被调用或者主窗口部件被销毁,app->exec()调用之后,就可以开始事件处理,主事件循环从窗口系统接收事件并分派给应用程序窗口部件,至此用户界面程序才可以正常和用户交互。
project1.pro:

第5行:TEMPLATE = app指明了依据该工程文件建立一个应用程序的Makefile,编译出一个可执行的应用程序;

第6行:TARGET可以指定生成目标的名字,不指定则默认生成和工程名一样的执行文件;

第7行:DEPENDPATH指定依赖路径;

第8行:INCLUDEPATH指定头文件路径;

第11行:是源码列表。

好了,简单解释到这。明确一下Qt的程序结构,在一个Qt源代码中,以下两条语句必不可少!

QApplication app(argc, argv);

……

return app.exec();

第三章 用SDK编译出第一个在Linux下的软件界面的更多相关文章

  1. [oracle] oracle的三种密码验证机制以及在windows和linux下的不同启动过程

    oracle数据库的密码验证机制: ① 操作系统验证 拥有SYSDBA和SYSOPER的用户用该方式验证此时数据库无需启动,也无需开启监听和实例服务. 要求:本地组ora_dba中有该操作系统的登录用 ...

  2. 程序员编程艺术:第三章续、Top K算法问题的实现

    程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha.     致谢:微软100题实现组,狂想曲创作组.     时间:2011年05月08日    ...

  3. 第三章 Git使用入门

    我们都知道Linux和Android是开源的.Linux下的软件很多都不直接以二进制形式的安装包提供,而是直接提供了源代码,为了减少发行包的大小,用户须先下载源代码,在本机上编译并安装,使用make. ...

  4. 分析linux下的编译环境

    不论是windows下的程序,还是linux下的程序,开发环境都离不开三个目录:include.lib.bin,分别是头文件目录.库文件目录.运行文件目录.或许目录不叫这个名字,但却必不可少,除非你的 ...

  5. 解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题

    PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台. 今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令: [plai ...

  6. Linux 下三种方式设置环境变量

    1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变 ...

  7. 【环境变量】Linux 下三种方式设置环境变量

    1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变 ...

  8. 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数

    整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git nullable, firstpos, la ...

  9. [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程

    [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程 本章包含如何在 Android Studio 中书写或生成代码. Android Studio ...

随机推荐

  1. Swift学习笔记(一)搭配环境以及代码执行成功

    1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.可以开发ios,mac相关的app哦!是苹果以后大力推广的语言哦! 2.Swift给你带来什么机会 ...

  2. android UI进阶之实现listview的分页加载

    上篇博文和大家分享了下拉刷新,这是一个用户体验非常好的操作方式.新浪微薄就是使用这种方式的典型. 还有个问题,当用户从网络上读取微薄的时候,如果一 下子全部加载用户未读的微薄这将耗费比较长的时间,造成 ...

  3. Centos 6.5使用Bumblebee关闭N卡,冷却你的电脑

    夏天来了,笔记本装的Centos一直非常热.随着天气的变化,这个问题真的要攻克了.差了下原因可能是双显卡笔记本,N卡驱动不完好,导致风扇狂叫. 昨天安装了nvidia 的显卡驱动本以为时间安静了.但是 ...

  4. c#线程问题(2)

    表示要在新上下文中调用的方法.public delegate void ContextCallback(Object state) 参数 state 类型: System. Object一个对象,包含 ...

  5. 我的第一款Cocos2d 游戏小狗快跑基本完成

  6. 疑问-hadoop

    hadoop可以设置备份数据个数,那么这些不同节点的数据块对于hadoop来说有区分谁是备份的谁是直接可以用的吗? hadoop有机架策略,给某些操作如像根据带宽选择节点传输数据 那么这种策略的根据是 ...

  7. hadoop学习记录(一)HDFS

    hadoop的灵感源于谷歌,最初目的是解决传统数据库处理数据成本高和速度慢的问题. hadoop两个核心项目是HDFS(hadoop分布式文件系统)和MapReduce. HDFS用来实现数据的存储, ...

  8. 通过 Session 操纵对象

    Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法. Session 具有一个缓存, 位于缓存中的对 ...

  9. Xcode 只有iOS device一个选项的解决办法

    下载了一个demo准备研究发现只有iOS device,没有其他的机型可选,解决方法比较简单,调下iOS SDK就行了

  10. CF Pangram

    Pangram time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...