第三章 用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 ...
随机推荐
- mybatis 关联映射传递多参数方法
<resultMap type="com.secoo.my.bean.OrderItemComment" id="orderItemResult"> ...
- WebBrowser 禁用脚本错误提示
public partial class Text : UserControl { public Text() { ...
- mysql 日期函数格式
mysql中的from_unixtime函数的format表达式字段描述: %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英语前缀的 ...
- QPixmap 和 HBITMAP互转
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(const QPixmap &p, int hbitmapFormat = 0); 声明这一句后, 就可以 ...
- cocos2d-x lua table与json的转换
cocos2d-x lua table与json的转换 version: cocos2d-x 3.6 1.引入json库 require("src/cocos/cocos2d/json&qu ...
- TCP/IP协议原理与应用笔记18:构成子网和超网
1. 引言: (1)类别IP编址(Classful IP)的缺陷 • 固定的3种IP网络规模 C类地址:少于255台主机的网络 B类地址:介于255~65535台主机的网络 ...
- UVA442 Matrix Chain Multiplication 矩阵运算量计算(栈的简单应用)
栈的练习,如此水题竟然做了两个小时... 题意:给出矩阵大小和矩阵的运算顺序,判断能否相乘并求运算量. 我的算法很简单:比如(((((DE)F)G)H)I),遇到 (就cnt累计加一,字母入栈,遇到) ...
- 移动互联网(APP)产品设计的经验分享【转】
随着移动互联网的发展,越来越多的Web产品开始布局移动端,因此最近经常碰到PM们在交流讨论移动APP产品的设计.我从事移动互联网已经有一年多了,通过不断的学习和实践也积累了一些心得,今天整理并分享一下 ...
- 根据url获取网页内容
PrintWriter out = null; out = response.getWriter(); try{ URL getUrl = new URL("http://www.kuaid ...
- CF Exam (数学)
Exam time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...