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

admin 2022年10月2日07:34:40评论27 views字数 3036阅读10分7秒阅读模式
第一个程序 - Hello QT
首先写main.cpp:
#include #include #include 
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                                         //根据工程文件生成makefilemake                                          //根据makefile进行编译,生成debug文件夹
接下来,进入debug文件,运行1.exe:
 1.QT-第一个程序 Hello QT , 以及QT creator介绍
如果想删除配置:
make clean                                       //删除配置文件,如果想再次编译,只需要make即可make distclean                                  //删除配置文件以及make,如果想再次编译,可以通过qmake和make

linux平台上,命令行编译
同样输入:
qmake -project //通过-project参数,将源码生成(*.pro)工程文件
qmake
//根据工程文件生成makefile
make
//根据makefile进行编译,生成可执行文件
运行:
 1.QT-第一个程序 Hello QT , 以及QT creator介绍
 
3.使用Qt creator编译
注意:构建项目时,如果出现以下问题,则可能环境变量未设置好,或者环境变量的qt路径前面有 “(” 或 “)” 字符,从而导致:Interrupt/Exception caught code = 0xc00000fd
 1.QT-第一个程序 Hello QT , 以及QT creator介绍
 
调试
调试分为两种
打印调试
头文件 #include
比如打印5,代码里输入:
qDebug()<<5;
 
断点调试
除了设置普通断点外,还可以设置条件断点(指程序满足条件,将会暂停)
如下图所示,在第17行处设断点:
 1.QT-第一个程序 Hello QT , 以及QT creator介绍
然后设置17行处的断点的条件为i==3:
1.QT-第一个程序 Hello QT , 以及QT creator介绍
开始调试
从打印处可以看到,代码运行到i=3时便暂停了:
 1.QT-第一个程序 Hello QT , 以及QT creator介绍
 
 
QT creator介绍
构建(bulid)
对项目中所有文件进行编译,最终生成可执行程序
Debug
用来进行调试的版本,程序中会包含调试信息,所以运行效率低
Release
最终发布的版本,无调试信息,运行效率高
 
 
QT Creator工程介绍
 1.QT-第一个程序 Hello QT , 以及QT creator介绍
 
 1.QT-第一个程序 Hello QT , 以及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 guiQT += networkgreaterThan(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-8QMAKE_CXXFLAGS += -source-charset:utf-8}

区分debug和release
CONFIG(debug, debug|release) {message("debug")} else {message("release")}

通过上面的学习,我们就能看懂下面的.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.QT-第一个程序 Hello QT , 以及QT creator介绍

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月2日07:34:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   1.QT-第一个程序 Hello QT , 以及QT creator介绍http://cn-sec.com/archives/1330193.html

发表评论

匿名网友 填写信息