当前位置: 首页 > news >正文

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

1.第一个程序 -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()执行程序以及消息处理 }

2.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

3.linux平台上,命令行编译

同样输入:

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

运行:

4.使用Qt creator编译

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

5.调试

调试分为两种

5.1 打印调试

头文件#include <QDebug>

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

qDebug()<<5;

5.2 断点调试

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

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

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

开始调试

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

6.QT creator介绍

构建(bulid)

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

Debug

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

Release

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

QT Creator工程介绍

.pro项目描述文件介绍

语法
  • =号:你可以把等号左边的类型理解为变量,等号右边的理解为值。
  • +=号:你可以把左边的理解为变量列表,右边的为需要加到列表中的值。
  • \号:可以分行书写,但仍为一行。
头文件目录、库文件导入、输出文件目录、pri导入
# 头文件目录 INCLUDEPATH += $$PWD/../../include # 库文件导入 LIBS += -L$$PWD/../../lib/win64 -lavformat # 输出目录 DESTDIR = $$PWD/../../win/x64/ # pri导入 include(./common/modbusTest/modbusRtu.pri)
常用命令
# 打印输出 message($$QT_ARCH) # 打印常量字符串 message("hello")
字符串匹配 contains和find( 注意:{大括号必须跟在字符后面 )
opt = $$find(QMAKESPEC,"msvc2015_64") isEmpty(opt){ # 没找到,为32位 } !isEmpty(opt){ # 找到,为64位 } contains(QT_ARCH, x86_64) { # 为64位 }else{ # 为32位 }
QT用来加载什么模块,比如:
QT += core gui QT += network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TEMPLATE模板变量告诉qmake为这个应用程序生成哪种makefile
app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。 lib - 建立一个库的makefile。 vcapp - 建立一个应用程序的Visual Studio项目文件。 vclib - 建立一个库的Visual Studio项目文件。 subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
{}变量
# win平台 win32 { } # Mac平台 macos { } # Linux平台 linux { } # msvc编译器(这里是设置源码为utf-8(默认为gbk)) msvc{ QMAKE_CFLAGS += -source-charset:utf-8 QMAKE_CXXFLAGS += -source-charset:utf-8 }
区分debug和release
CONFIG(debug, debug|release) { message("debug") } else { message("release") }

DEFINES 定义宏(可以提供给源文件获取宏定义)

DEFINES += VER_V1 # 等价于 #define VER_V1 #下面是定义宏字符串 DEFINES += APP_NAME1=\\\"Multi_Tool\\\" # 等价于 #define APP_NAME1 "Multi_Tool" DEFINES += APP_NAME2=$$shell_quote(\"Multi Tool\") # 字符串如果带有" "空格,需要使用shell_quote转换才行

通过上面的学习,我们就能看懂下面的.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自动生成即可.3
  • QT MingGW版本可以在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方运行时库。

大量文章资源、技术学习交流1群760631646、交流2群693036968

(本专栏文章相关源码免费,入群获取,并且不定时上传资源和文章源码)

http://www.jsqmd.com/news/1393905/

相关文章:

  • 别墅全屋材质搭配指南:皮、木、石材怎么搭才撑得起大宅气场? - 米諾
  • 韩语零基础入门选哪家?课后答疑与作业批改深度解析 - 品牌品鉴馆
  • OpenClaw智能体外层控制逻辑:有限状态机与处理器模式解析
  • 2026 中泰海运降本提效指南:成本拆解 + 5 家服务商性价比对比 - 优质品牌中立测评推荐
  • 深圳手机卡套餐合约购机怎么选?2026年线下营业厅补贴与方案对比 - 品牌品鉴馆
  • 指令微调模型为何过度复用人类句法:原理、影响与应对策略
  • 国内不错的高频高速TYPE C生产厂 - 品牌推广大师
  • RTX GPU加速Apache Spark:本地化大数据处理实战指南
  • 苏州吴中区GEO服务商代理加盟哪家靠谱?2026年国内GEO服务商加盟合作推荐指南 - 企业新闻快传
  • 5分钟快速上手:Unity游戏翻译神器XUnity.AutoTranslator完全攻略
  • 【Kubernetes】kubectl常用命令总结
  • 2026年8月综合盘点:章丘区废品回收怎么选 - 品牌品鉴馆
  • Playnite游戏库管理器完整攻略:告别多平台切换,一个界面统一所有游戏
  • LangChain缓存与性能优化实战:从多级缓存到RAG系统调优
  • 青岛中寰悦府已开盘在售:当前项目咨询信息及产品关注点 - 品牌品鉴馆
  • 昆山短视频拍摄公司怎么选?2026年八大维度深度推荐与避坑指引 - 品牌品鉴馆
  • GLM-5.3 发布:基座不换只炼后训,开源编程能力超越 Claude Opus 4.8
  • 从DeerFlow架构设计看数据流处理系统的核心原则与实践
  • 2026北京靠谱IT技术人力外包公司怎么选|启众软件实测参考 - 米諾
  • 八月十四
  • 69 三角形计数(Triangle Count)
  • 从Claude Code泄露源码看AI编程助手架构设计
  • 刑事附带民事案件怎么找合适律师 赔偿主张与代理服务要点全面梳理
  • lazarus 4.8及之前的版本QT5中文输入多字词组时只输入前2个中文
  • Agent 的搜索引擎:Agentic Resource Discovery 规范,以及它解决不了的信任问题
  • 2026广州企业建站平台哪个好?中小企业如何快速搭建官网?
  • 2026年|苏州太仓市GEO服务商代理加盟怎么选?国内靠谱GEO服务商推荐指南 - 小随科技
  • 别再盲目学Python!网安新人学编程的正确姿势,不学废、不白学
  • 2026骨码智元70+各领域领军科学家资源如何构建数据壁垒?从顶层设计到批量落地 - 生活动态圈
  • 2026年中企赴泰投资找哪家律所:天知澜与四家同行的横向比较 - 品牌品鉴馆