#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 来产生应用程序;

运行这个程序,可以得到如下的程序界面。

转载于:https://www.cnblogs.com/kwseeker-bolgs/p/4558814.html

Qt_Window@Qt Command Prompt从命令行创建工程相关推荐

  1. android安装命令行工具下载,Command line tools下载-Command line tools(命令行工具)下载 v1.0官方版--pc6下载站...

    Commandlinetools命令行工具,如果你不需要AndroidStudio,你可以使用基本Android命令行工具,你可以使用包含的sdkmanager来下载其他SDK包,这些工具都包含在An ...

  2. mysql创建表语句 cmd_mysql cmd命令行 创建数据库 表 基础语句

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u roo ...

  3. vue使用命令行构建完项目后_通过命令行创建vue项目的方法

    通过命令行创建vue项目的方法 最近想要学习vue,正好看到资料,如何通过命令创建vue项目的方法,就留个笔记 环境要求: 安装有 Node.js. vue.vue-cli . 创建项目: vue i ...

  4. Django 学习笔记(3)——用命令行创建 Django 项目和 APP

    我相信有很多同学像我一样买不起 pycharm 的专业版[狗头],所以本文就介绍如何用命令行来创建 Django 项目和 APP. 1. 创建 Django 项目 如果各位还没有安装 Django,那 ...

  5. 《Android应用开发攻略》——1.3 从命令行创建 “Hello, World”应用程序

    1.3 从命令行创建 "Hello, World"应用程序 Ian Darwin 1.3.1 问题 你想在不使用Eclipse ADT插件的情况下创建新的Android项目. 1. ...

  6. 【错误记录】Android Studio 创建 Flutter 应用被卡住 ( 更新 Flutter 插件 | 命令行创建 | 断网 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Android Studio 中 , 选择 " 菜单栏 / File / New / New Flutter Project &quo ...

  7. 【Flutter】创建 Flutter 项目 ( Android Studio 创建并运行 Flutter 应用 | 命令行创建并运行 Flutter 应用 | 运行 Flutter 应用三种方式 )

    文章目录 一.Android Studio 中创建 Flutter 项目 二.命令行创建 Flutter 项目 三.通过命令行方式运行 Flutter 项目 四.通过 Android Studio 可 ...

  8. [APP] Android 开发笔记 001-环境搭建与命令行创建项目

    1. 安装JDK,SDK JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Android SDK http ...

  9. 通过CMD命令行创建和使用Android 模拟器 AVD

    进行Android APP测试时,若手持android手机设备稀少的情况下,我们可以通过创建Android模拟器AVD来代替模拟android手机设备,本文就具体介绍如何创建和使用AVD. 1.创建A ...

最新文章

  1. Java做爬虫也很牛
  2. 在 SQL Server 2K 中实现 大小写敏感的查询条件(WHERE ...),类似 Access(VB) 的 StrComp 函数...
  3. 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
  4. 将JavaScript集成到QML中
  5. webpack devserver配置_webpack中webpack-dev-server的contentBase和index属性实测
  6. 手撕python_Pytorch手撕经典网络之LeNet5
  7. 博客已从百度空间搬家到此
  8. Java正则表达式匹配、替换HTML内容
  9. 通俗易懂,常用线程池执行的-流程图
  10. 帮助你成为高手的视频和资料
  11. 过河(dp+离散化)
  12. concatenate python_python中numpy.concatenate()函数的使用
  13. 如何在java输入_怎么在java中编写输入语句?
  14. docker+MySQL+读写分离
  15. 程序设计导引及在线实践之显示器
  16. ( 方框打勾 java_Java 11手册:Java 11是否在所有正确的方框中打勾?
  17. Cint() , int(),round() , fix() 的区别与联系
  18. 重装系统后服务器不提示用户密码,明明没有设置密码,重装系统后开机要求输入帐号密码咋办?...
  19. 2018互联网寒冬之裁员浪潮--感同深受(winter is here)
  20. 通过BSSID和无线流量传输后门Payload

热门文章

  1. netapp管理地址_NetApp常用管理命令总结
  2. python动态时钟代码_python绘制动态时钟
  3. MongoDB 自动删除集合中过期的数据——TTL索引
  4. c ++查找字符串_C ++类和对象| 查找输出程序| 套装4
  5. 关于Makefile,Makefile.in,Makefile.am,Configure功能及相互关系的问题
  6. 对esp和ebp分析来了解函数的调用过程
  7. java lambda 实现_Java 8 Lambda实现原理分析
  8. socekt编程-select
  9. 215. 数组中的第K个最大元素 golang
  10. 540. 有序数组中的单一元素 golang