Qt_Window@Qt Command Prompt从命令行创建工程
#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();
}
第1 行和第2 行包含了两个类的定义:QApplication 和QLabel。对于每一个Qt 的类,都会有一个同名的头文件,头文件里包含了这个类的定义。因此,你如果在程序中使用了一个类的对象,那么在程序中就必须包括这个头文件。
第3 行是程序的入口。几乎在使用Qt 的所有情况下,main()函数只需要在把控制权转交给Qt 库之前执行一些初始化,然后Qt 库通过事件来向程序告知用户的行为。argc 是命令行变量的数量,argv 是命令行变量的数组。这是一个C/C++特征。它不是Qt 专有的,无论如何Qt 需要处理这些变量
第5 行定义了一个QApplication 对象App。QApplication 管理了各种各样的应用程序的广泛资源,比如默认的字体和光标。App 的创建需要argc 和argv 是因为Qt 支持一些自己的命令行参数。在每一个使用Qt 的应用程序中都必须使用一个QApplication 对象,并且在任何Qt 的窗口系统部件被使用之前创建此对象是必须的。App 在这里被创建并且处理后面的命令行变量(比如在X 窗口下的-display)。请注意,所有被Qt 识别的命令行参数都会从argv中被移除(并且argc 也因此而减少)。
第6 行创建了一个QLabel 窗口部件(widget),用来显示“Hello,Qt!”。在Qt 和Unix的术语中,一个窗口部件就是用户界面中一个可见的元素,它相当于Windows 术语中的“容器”加上“控制器”。按钮(Button)、菜单(menu)、滚动条(scroll bars)和框架(frame)都是窗口部件的例子。窗口部件可以包含其它的窗口部件。例如,一个应用程序界面通常就是一个包含了QMenuBar,一些QToolBar,一个QStatusBar 和其它的一些部件的窗口。绝大多数应用程序使用一个QMainWindow 或者一个QDialog 作为程序界面,但是Qt 允许任何窗口部件成为窗口。在这个例子中,QLabel 窗口部件就是作为应用程序主窗口的。
第7 行使我们创建的QLabel 可见。当窗口部件被创建的时候,它总是隐藏的,必须调用show()来使它可见。通过这个特点我们可以在显示这些窗口部件之前定制它们,这样就不会出现闪烁的情况。
第8 行就是main()将控制权交给Qt。在这里,程序进入了事件循环。事件循环是一种stand-by 的模式,程序会等待用户的动作(比如按下鼠标或者是键盘)。用户的动作将会产生程序可以做出反应的事件(也被称为“消息”)。程序对这些事件的反应通常是执行一个或几个函数。
为了简单起见,我们没有在main()函数的结尾处调用delete 来删除QLabel 对象。这种内存泄露是无害的,因为像这样的小程序,在结束时操作系统将会释放程序占用的内存堆。
Qt Command Prompt从命令行创建工程步骤:
源码->工程-> Makefile->可执行程序
下面我们来编译这个程序。建立一个名为hello 的目录,在目录下建立一个名为hello.cpp的c++源文件,将上面的代码写入文件中。
打开Qt Command Prompt;
在命令行模式下,切换目录到hello 下,然后输入命令:qmake –project。这个命令将产生一个依赖于工作平台的工程文件(hello.pro);
再输入命令:qmake hello.pro。这个命令通过工程文件产生一个可以在特定工作平台上使用的makefile;
最后输入命令:make 来产生应用程序;
运行这个程序,可以得到如下的程序界面。

Qt_Window@Qt Command Prompt从命令行创建工程的更多相关文章
- Vivado如何使用命令行创建工程
前言 vivado中采用TCL脚本语言来作为其命令解释语言.除去可以普通的图形界面流程还可以使用tcl脚本创建工程并导入相关源文件. 流程 1.首先还是要打开vivado图形主界面. 2.在某路径 ...
- QT中QProcess调用命令行的痛苦经历(调用Winrar,设置工作目录,获得输出,注意引号与括号,等等)
QT中QProcess调用命令行的痛苦经历 阅读目录 创建压缩包的方法 在QT中调用命令行 在QT中调用C++创建的dll 在QT程序中需要将某些目录和文件压缩为一个rar的压缩包,于是想到了在Q ...
- Vue Create 创建一个新项目 命令行创建和视图创建
Vue Create 创建一个新项目 命令行创建和视图创建 开始之前 你可以先 >>:cd desktop[将安装目录切换到桌面] >>:vue -V :Vue CLI 3.0 ...
- PLSQL命令行创建用户 以及 JDBC简单操作
目录 PLSQL Developer命令行创建用户以及表 课堂要点 JDBC 主外键约束 踩坑之路 设置ORACLE_HOME环境变量 PLSQL Developer命令行创建用户以及表 打开Co ...
- mysql命令行创建存储过程命令行定时执行sql语句
mysql -uroot -p show databases; use scm; show tables; show procedure status; 其他命令: SHOW VARIABLES LI ...
- PHP Yii1.1.13(一):命令行创建应用~shop
第一节 初始目录结构 (1)初识目录结构 在创建应用之前,我们来看一下Yii 1.x版本的目录结构:将yii-1.1.13安装文件解压到网站根目录下,打开framework目录,其目录如下图所示 (2 ...
- 【Android测试】【随笔】在手机里用命令行创建中文文件夹
◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4580319.html 不知道为啥当时自己写了一段在手机里用 ...
- 命令行创建畸形文件夹+畸形目录管理工具(DeformityPath)
命令行创建畸形文件夹: 第一步:在运行中输入cmd,回车,打开命令行窗口 第二步:在命令行窗口中切换到想要建立文件夹的硬盘分区,如D盘(输入d:) 第三步:输入 MD 123..\ 回车,注意文件夹名 ...
- 命令行创建AVD
1.命令行创建AVD android create avd -n myAvd -t 8 -b armeabi-v7a -p d:\scard.img -s HVGA 2.删除AVD android d ...
随机推荐
- adaboost算法
三 Adaboost 算法 AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(很多博客里说的三个臭皮匠 ...
- Python学习路程day3
set集合 set是一个无序且不重复的元素集合,访问速度快,天生解决重复问题 s1 = set() s1.add('luo') s2 = set (['luo','wu','wei','ling' ...
- Design Patterns
经典的<设计模式>一书归纳出23种设计模式,本文按<易学设计模式>一书归纳分类如下:1.创建型模式 前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和 ...
- C/C++ static vs global
static has a very simple logic to it. If a variable is static, it means that it is a global variable ...
- 解决:Android编译源码根目录下/system/vold后,通过push命令将编译生成的vold文件push至system/bin下无法正常开机
这段时间由于工作需要,在对android根目录下/system/vold进行修改编译的时候,在通过adb命令将vold文件push至/system/bin目录下,adb reboot重启手机却发现一直 ...
- 解决:HotSeat短信图标提醒有误
[操作步骤]正常收发短信.彩信. [测试结果]所有短信均已阅读,但在HOME界面的短信图标仍提示有一条短信未读.重启后仍存在. 经过分析,导致该情况的主要原因为当彩信已读的时候,launcher中进行 ...
- JAVA的数组和输入
package com.java1995; import java.util.Scanner; public class Array { public static void main(String[ ...
- css3 动画贝塞尔曲线
http://cubic-bezier.com/#.17,.67,.83,.67 缓动函数速查表: http://www.xuanfengge.com/easeing/easeing/ Ceaser: ...
- GIT之一 起步篇
关于版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本.采用版本控制系统(VCS) ...
- 第一个Sprint冲刺第二天
讨论成员:邵家文.朱浩龙.陈俊金.李新 讨论地点:宿舍 讨论内容:安卓开发技术,与后续需要加强的内容 计时功能完成度:刚开始讨论实现的技术