专栏首页Linux驱动QT-第一个程序 Hello QT , 以及QT creator介绍

QT-第一个程序 Hello QT , 以及QT creator介绍

第一个程序 - 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()<<5;

断点调试

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

如下图所示,在第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, 4): 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自动生成即可

接下来,下章继续学习QT中的部件与坐标~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 41.Linux应用调试-修改内核来打印用户态的oops

    1.在之前第36章里,我们学习了通过驱动的oops定位错误代码行 第36章的oops代码如下所示: Unable to handle kernel paging...

    张诺谦
  • 替代FileZilla,使用NetDrive将虚拟机映射到本地磁盘

    使用NetDrive软件来替代FileZilla,NetDrive是一个能把FTP空间虚拟成本地硬盘的软件,这样我们就不需要再使用FileZilla来来回拷贝文...

    张诺谦
  • LeetCode-391. 完美矩形(使用C语言编译,详解)

    链接:https://leetcode-cn.com/problems/perfect-rectangle/description/ 题目 我们有 N 个与坐标...

    张诺谦
  • 9、web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解

    (1)首先,看看火狐浏览器的配置,是不是下方“为所有协议使用相同代理”的地方没有勾选上,如果是,请勾选上。

    天降攻城狮
  • Spring Cloud同步场景分布式事务怎样做?试试Seata

    在微服务架构下,虽然我们会尽量避免分布式事务,但是只要业务复杂的情况下这是一个绕不开的问题,如何保证业务数据一致性呢?本文主要介绍同步场景下使用Seata的AT...

    陶陶技术笔记
  • 灵感干涸?7条路径找到创新不老泉

    人们在听到“创新”一词时总会联想到研发中心、设计团队或者初创企业。但在今天,创新者无处不在,从工厂到销售展示厅,从IT客服中心到人事部门,从员工餐厅到高管层,所...

    机器人网
  • JVM内存分析,以及一步步详解Java程序是如何运行的?

    最终还是决定更加深入地学习下JVM,同时也用自己的理解详细地说明Java程序是如何运行的。

    刘小爱
  • RocketMQ安装

    包推荐使用 git 直接拉下来。没装 git 就 wget 去拉。需要 maven 来编译 rocketmq,实际上只要装好 maven 即可,其他不用操作 m...

    潇洒
  • Java虚拟机内存模型【小白版】

    同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。

    Java帮帮
  • 你这个面试,很难通过啊!!!

    在上周,我密集面试了若干位 Java 后端的候选人,工作经验在 3 到 5 年间。我的标准其实不复杂:第一能干活,第二 Java 基础要好,第三最好熟悉些分布式...

    周三不加班

扫码关注云+社区

领取腾讯云代金券