第三章 用SDK编译出第一个在Linux下的软件界面
第三章 用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下的软件界面的更多相关文章
- [oracle] oracle的三种密码验证机制以及在windows和linux下的不同启动过程
oracle数据库的密码验证机制: ① 操作系统验证 拥有SYSDBA和SYSOPER的用户用该方式验证此时数据库无需启动,也无需开启监听和实例服务. 要求:本地组ora_dba中有该操作系统的登录用 ...
- 程序员编程艺术:第三章续、Top K算法问题的实现
程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha. 致谢:微软100题实现组,狂想曲创作组. 时间:2011年05月08日 ...
- 第三章 Git使用入门
我们都知道Linux和Android是开源的.Linux下的软件很多都不直接以二进制形式的安装包提供,而是直接提供了源代码,为了减少发行包的大小,用户须先下载源代码,在本机上编译并安装,使用make. ...
- 分析linux下的编译环境
不论是windows下的程序,还是linux下的程序,开发环境都离不开三个目录:include.lib.bin,分别是头文件目录.库文件目录.运行文件目录.或许目录不叫这个名字,但却必不可少,除非你的 ...
- 解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台. 今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令: [plai ...
- Linux 下三种方式设置环境变量
1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变 ...
- 【环境变量】Linux 下三种方式设置环境变量
1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变 ...
- 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git nullable, firstpos, la ...
- [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程
[Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程 本章包含如何在 Android Studio 中书写或生成代码. Android Studio ...
随机推荐
- [React] Styling React Components With Aphrodite
Aphrodite is a library styling React components. You get all the benefits of inline styles (encapsul ...
- #define使用方法
1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,假设在程序里面写 if(i<MAXTIME){.........} 编译 ...
- VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5,本人X220亲测
原文链接:http://bbs.weiphone.com/read-htm-tid-7625465.html 建议电脑要求 Windows 7/8, 32 / 64 bit CPU Int ...
- 使用hibernate自动创建Mysql表失败原因
1.使用 schemaExport(hibernate5.2.3)创建Mysql表 @Test public void testSchemaExport() { ServiceRegistry ser ...
- MySQL(19):SQL语句(MySQL)大全
SQL语句大全一.创建和删除数据库 1.创建用户 //创建用户且置密码,在MySQL中行,但在Oracle中行 ----必须在超级管理员身份下操作 create user hncu identifi ...
- Android进阶笔记13:RoboBinding(实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架)
1.RoboBinding RoboBinding是一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架.从简单的角度看,他移除了如addXXListen ...
- Android(java)学习笔记110:ScrollView用法
理论部分 1.ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 2.上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 3.上述两个控件可以互相嵌套 4. ...
- 如何使用数据卷在宿主机和docker容器之间共享文件
共享宿主机的目录给容器 docker run -i -t -v ~/download:/home/hello python3-env /bin/bash -v 表示创建一个数据卷并挂载到容器里 ~/ ...
- 移动终端学习2:触屏原生js事件及重力感应
如今智能移动设备已经渗透到人们生活的方方面面,用户数量也在不断迅速增长(市场研究机构 eMarketer 在今年初发表的趋势报告中预测,2014年至2018年,中国智能手机用户从总人口的 38.3%增 ...
- Inaccurate values for “Currently allocated space” and “Available free space” in the Shrink File dialog for TEMPDB only
转载自:http://blogs.msdn.com/b/ialonso/archive/2012/10/08/inaccurate-values-for-currently-allocated-spa ...