第三章 用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 ...
随机推荐
- 向linux内核加入系统调用新老内核比較
2.6内核 1>改动linux-source-2.6.31/kernel/sys.c文件,在文件末尾加入系统响应函数.函数实现例如以下: asmlinkage int sys_mycall(in ...
- sqlserver 日期相关2
1.常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233') (1)DATENAME ( datepart ,date ) 返回表示指定日期的指定日期部分的字符 ...
- const int * pi/int * const pi的区别
前面有一篇文章:数组名就是常量指针 参考文章:http://blog.pfan.cn/whyhappy/5164.html const int * pi .int const * pi与int * ...
- c# 操作word
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- AES 加解密
// // NSData+AES.h // Smile // // Created by 蒲晓涛 on 12-11-24. // Copyright (c) 2012年 BOX. All rights ...
- [课程相关]homework-07
我读的博客: C++11中值得关注的几大变化 C++11 中的线程.锁和条件变量 C++开发者都应该使用的10个C++11特性 开始使用C++11的9个理由 我的问题: 1.有一句话:“C++像难懂的 ...
- Wing IDE编译TesorFlow中Mnist convolutional 实例
# # http://www.cnblogs.com/mydebug/ # from __future__ import absolute_import from __future__ import ...
- linux安装gcc的一些问题。
输入命令:yum install gcc 提示: Loaded plugins: fastestmirror, langpacksExisting lock /var/run/yum.pid: ano ...
- Ajax具体使用
Ajax在注册页面经常使用,当注册用户是用户名必须唯一时,要使用ajax获取表单中你输入的内容, 然后将这个数据利用XMLHttpRequest对象请求一个php文件,这个php文件接收到信息,查询数 ...
- Springmvc+uploadify实现文件带进度条批量上传
网上看了很多关于文件上传的帖子,众口不一,感觉有点乱,最近正好公司的项目里用到JQuery的uploadify控件做文件上传,所以整理下头绪,搞篇文档出来,供亲们分享. Uploadify控件的主要优 ...