第一个程序 - Hello QT

首先写main.cpp:

#include <QApplication>
#include <QMainWindow>
#include <QPushButton> int main(int argc, char* argv[])
{
  QApplication a(argc, argv); // Qapplication表示一个应用程序,而它的成员函数exec()则用来执行程序以及消息处理
  QMainWindow w; //定义一个QmainWindow主窗口对象w   QPushButton b(&w); //通过&w,在主窗口上定义QpushButton按钮对象b
  b.setText("Hello QT!"); //通过b对象的成员函数setText(),设置按钮名字为Hello QT   w.show(); //显示主窗口
  return a.exec(); //通过exec()执行程序以及消息处理
}

win平台上,命令行编译

进入main.cpp所在目录“1.Hello QT”,输入:

qmake   -project                              //通过-project参数,将源码生成(*.pro)工程文件
qmake //根据工程文件生成makefile
make //根据makefile进行编译,生成debug文件夹

接下来,进入debug文件,运行1.exe:

如果想删除配置:

make clean                                       //删除配置文件,如果想再次编译,只需要make即可
make distclean //删除配置文件以及make,如果想再次编译,可以通过qmake和make

linux平台上,命令行编译

同样输入:

qmake   -project                                   //通过-project参数,将源码生成(*.pro)工程文件
qmake //根据工程文件生成makefile
make //根据makefile进行编译,生成可执行文件

运行:

3.使用Qt creator编译

注意:构建项目时,如果出现以下问题,则可能环境变量未设置好,或者环境变量的qt路径前面有 “(” 或 “)” 字符,从而导致:Interrupt/Exception caught code = 0xc00000fd

调试

调试分为两种

打印调试

头文件 #include <QDebug>

比如打印5,代码里输入:

qDebug()<<;

断点调试

除了设置普通断点外,还可以设置条件断点(指程序满足条件,将会暂停)

如下图所示,在第17行处设断点:

然后设置17行处的断点的条件为i==3:

开始调试

从打印处可以看到,代码运行到i=3时便暂停了:

 

QT creator介绍

构建(bulid)

对项目中所有文件进行编译,最终生成可执行程序

Debug版

用来进行调试的版本,程序中会包含调试信息,所以运行效率低

Release版

最终发布的版本,无调试信息,运行效率高

 

 

QT Creator工程介绍

.pro项目描述文件

其本质就是一个简化的Makefile,通过不同平台的qmake生成不同平台的Makefile,如下图所示:

 

 

.pro项目描述文件介绍

基本构成如下图所示:

 

高级变量如下图所示:

其中CONFIG的常用选项有:

  • debug  :  构建debug版本的可执行程序
  • release : 构建release版本的可执行程序
  • debug_and_release  :  同时构建debug和release版本
  • wran_on  :  尽可能多的输出警告信息
  • wran_off  :  不输出警告信息

 

通过上面的学习,我们就能看懂下面的.pro项目描述文件了:

QT += core gui                      #添加core和gui模块(QT不仅只涉及显示模块,还有数据库,多线程,网络等等)

greaterThan(QT_MAJOR_VERSION, ): QT += widgets  #如果当前版本大于4.0,则需要widgets模块

TARGET = HelloWorld            #以win平台为例,生成的程序为:HelloWorld.exe

TEMPLATE = app                 #声明编译出来的是app程序,而不是库文件

INCLUDEPATH += E:/BCC/include \        #指定头文件路径
E:/VC/include SOURCES += Main.cpp \ #源文件
HelloWorld.cpp HEADERS += HelloWorld.h #头文件名 FORMS += HelloWorld.ui #指定界面描述文件 RC_FILE += MyIco.rc #指定资源文件,比如图片 LIBS += -LE:/vlc-1.11/sdk/lib #指定外部库 CONFIG += warn_on debug #构建debug版本,并输出警告信息 #
# if 'debug' option is set for CONFIG
#
CONFIG(debug) { #如果CONFIG有debug选项
DEFINES += DEBUG_LOG #则定义: #define DEBUG_LOG
SOURCES += DebugLog.cpp #并添加debug相关文件
HEADERS += DebugLog.h
}

注意:

  • QT Creator生成的.pro.user文件,包含的是与平台相关的配置信息,与我们无关,不需要修改该文件
  • 移植项目时需要删除.pro.user这个文件,需要时,再由QT Creator自动生成即可.3
  • QT MingGW版本可以在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方运行时库。

 

接下来,下章继续学习 :  2.QT-窗口组件(QWidget),QT坐标系统,初探消息处理(信号与槽)

 

QT-第一个程序 Hello QT , 以及QT creator介绍的更多相关文章

  1. Qt开发的程序在没有安装Qt环境的机器上可能出现的一些问题

    Qt开发的程序在没有安装Qt环境的机器上可能出现的一些问题,如:除png外的其它类型的图片,如:jpg.ico.bmp等,还有中文乱码等问题,出现这些问题的本质是Qt对这类文件格式或编码格式的支持方式 ...

  2. QT学习之第一个程序

    QT学习之第一个程序 目录 手动创建主窗口 居中显示 添加窗口图标 显示提示文本 Message Box的应用 手动连接信号与槽 手动创建主窗口 窗口类型 QMainWindow: 可以包含菜单栏.工 ...

  3. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数

    QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 分类: QT2009-10-28 13:33 17695人阅读 评论(13) 收藏 举报 qtapplicationwindowse ...

  4. Qt 第一步,环境搭建与测试

    晚上离散数学课下课后就开始安装Qt. 最先安装的是5.2版本的,这个最新的版本集成了所有必须的工具,不需要配置,直接就可以运行的. 但是,看书和社区教程以及参考资料时候,发现大多是4.8版本的.于是, ...

  5. linux下对qt编写的程序进行部署

    当我们完成程序设计之后,需要将可执行程序交付客户,而运行环境里面可能是没有相关支持库的,这个时候就涉及到部署的相关问题.对于我们在Linux下基于QT编写的图像处理程序,我们采用linuxdeploy ...

  6. Windows下用VC与QT编译MPI程序入门

    MPI是信息传递接口的简称,常用来进行进程间.机器间的通信与并行计算.一般而言,MPI都会部署在*nix系统下,在Windows下面直接编译.配置MPI并不容易.本文利用MS提供的编译好的MPI的版本 ...

  7. QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)

    使用QT也有一段时间了,有的时候需要跟踪代码到QT的源码中去查找问题.在这里我将记录一下我跟踪QT源码学习到的一些知识. 我的开发环境是VC6.0+QT4.3.3.QT已经不为VC6.0提供addin ...

  8. Qt for Android 程序禁止屏幕旋转

    有时候我们希望让一个程序的界面始终保持在一个方向,不随手机(平板)方向旋转而变化:在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入 android:screen ...

  9. Qt+VS2015应用程序发布

    本文以Qt 5.9.1+VS2015编译环境为例介绍应用程序发布流程,也适用于Qt+mingw的情况. 1. Qt依赖库 将需要发布的exe(如test.exe),放到单独的目录. 在"开始 ...

随机推荐

  1. 用C#开发的一个通用的地铁换乘查询工具

    日常生活中,上班下班坐地铁已经是常事,每当我想去某一个远一点的地方,如果有地铁首选就是地铁,因为方便嘛!每次坐地铁,我们都是凭肉眼去得出我们心中最佳的换乘方案,但是,如果对于线路较少的城市来说,这个方 ...

  2. 数据库 --> SQL Server 和 Oracle 以及 MySQL 区别

    SQL Server 和 Oracle 以及 MySQL 区别 三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非 ...

  3. java各种概念 Core Java总结

    Base: OOA是什么?OOD是什么?OOP是什么?{ oo(object-oriented):基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统 ...

  4. 手写ButterKnife

    开发中使用注解框架可以极大地提高编码效率,注解框架用到的技术可以分为两种,运行时注解跟编译时注解.运行时注解一般配合反射机制使用,编译时注解则是用来生成模板代码.这里我们分别使用这两种方法实现Butt ...

  5. Java多线程:Callable,Future,FutureTask

    一.Future Future和Callable基本是成对出现的,Callable负责产生结果,Future负责获取结果.     1.Callable接口类似于Runnable,只是Runnable ...

  6. Android 的消息队列模型

    Android 的消息队列模型 Android是参考Windows的消息循环机制来实现Android自身的消息循环的.    Android通过Looper.Handler来实现消息循环机制,Andr ...

  7. 关于input内容改变的触发时间

    1.onchange onchange 事件会在域的内容改变时触发.支持的标签<input type="text">, <textarea>, <se ...

  8. 软件工程结对编程-2017282110264&2017282110249

    0 小组成员 李世钰 / 2017202110264 王成科 / 2017282110249 1 项目 GitHub 地址 && 演示地址 GitHub: https://github ...

  9. MyGod_alpha版本测试报告

    买尬-Alpha版本测试报告 @(二手市场APP)[MyGod团队|团队项目|版本测试] 项目名称:武汉大学校园二手市场APP--买尬 软件版本:1.0.0 开发团队:MyGod 开发代表:程环宇 张 ...

  10. 08-TypeScript中的类

    类的概念通常是在后端开发中实现的思想,比如C#.C++或Java,传统的JavaScript开发通过使用原型模式来模拟类的功能.在TypeScript中,天生就是支持类 的,可以让前端的开发更加具有面 ...