自学内容网 自学内容网

Qt Pro 常用配置

Part1: Summary

Qt 开发中 Pro 文件的内容很多,需要不断的去学习和使用,现系统性的整理一下。以备录;

1.创建pro文件

1.1 步骤:

Qt Creator--->New Project--->应用程序--->Qt Widgets Application--->名称为:Demo  --->类信息保持不变--->完成

1.2 pro文件

在工程目录下,Demo 目录下打开pro的文件,内容如下:

#-------------------------------------------------
#
# Project created by QtCreator 2024-06-22T20:11:39
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
QT += concurrent
TARGET = TestDemo
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11

SOURCES += \
        main.cpp \
        mainwindow.cpp \
    mydirectionbutton.cpp


HEADERS += \
        mainwindow.h \
    mydirectionbutton.h


FORMS += \
        #cutestl.ui \
        mainwindow.ui \


# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    image.qrc

Part2:各项意义

以上是 Demo.pro 配置文件中默认包含的内容。其中,#号是注释符号,除了以#号开头的注释内容外,其它内容都是当前项目的配置信息,比如QT += core gui、TARGET = Demo等。

2.1 组成:

pro 文件可以存储上百条配置信息,每条配置信息由三部分构成:

  • 前半部分是关键字,也称配置项,用来指明配置信息的含义;
  • 中间用 +=、-=、= 等数学符号连接配置项和它对应的值;
  • 后半部分是配置项对应的值,一个配置项可以对应多个值,每个值代表不同的含义。

例如在 QT += core gui中,Qt是配置项,core和gui是该配置项的值,中间用+=符号连接。下表给大家罗列了一些常用的配置项以及它们各自的含义。

1 Qt pro文件常用配置项
配置项含 义
QT指定项目中用到的所有模块,默认值为 core 和 gui,中间用 += 符号连接。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets如果 QT 版本大于 4(Qt5 或更高版本),则需要添加 widgets 模块,该模块包含所有控件类。
TARGET指定程序成功运行后生成的可执行文件的名称,中间用 = 符号连接。
TEMPLATE指定如何运行当前程序,默认值为 app,表示当前程序是一个应用程序,可以直接编译、运行。常用的值还有 lib,表示将当前程序编译成库文件。
DEFINES在程序中新定义一个指定的宏,比如 DEFINES += xxx,如同在程序中添加了 #define xxx 语句。
HEADERS指定项目中包含的所有 .h 头文件。
FORMS指定项目中包含的 ui 文件。
INCLUDEPATH指定头文件的存储路径,例如:INCLUDEPATH += /opt/ros/include
CONFIG经常对应的值有: release:以 release 模式编译程序;debug:以 debug 模式编译程序;warn_on:编译器输出尽可能多的警告;c++11:启动 C++11 标准支持。例如 CONFIG += c++11。

上表中,大部分配置项自动生成不需要我们手动修改,比如 SOURCES、HEADERS、FORMS 等,当我们添加或者删除项目中的源文件时,Qt 会自动修改这些配置项。有些配置项需要手动修改,比如 QT 配置项. 

2.Qt配置项

前面提到,Qt 根据各个类的功能将它们分到不同的模块,因此程序中要想使用某个类,必须完成两项准备工作:

  1. 引入包含该类的头文件,通常情况下,Qt 中每个类的类名和包含它的头文件的名称是相同的,比如 QWiget 窗口类位于头文件中;
  2. 将该类所属的模块添加到 pro 项目管理文件中。

QT 用来指明当前项目中用到的所有模块,它的默认值是 core 和 gui,分别表示引入 Core 模块和 GUI 模块:

  • Core 模块包含了 Qt GUI 界面开发的核心功能,其它所有模块都需要依赖于这个模块,它是所有 Qt GUI 项目必备的模块;
  • GUI 模块提供了用于开发 GUI 应用程序的必要的一些类。

每个新创建的 Qt GUI 项目中,都默认包含 Core 模块和 GUI 模块,如果项目中用不到它们,可以使用QT -=删除。例如,删除项目中包含的 GUI 模块,只需在 pro 文件中添加一条配置信息:

QT -= gui

如需要  包含操作数据库相关的类 SQL

QT += sql

 那么,当程序中用到某个类时,如何知道它属于哪个模块呢?很简单,先将该类所在的头文件中引入到程序中,然后鼠标选中头文件并按Fn+F1组合键,打开该头文件的使用手册后就可以看到它所属的模块。以程序中使用 QEventLoop,不清楚在哪个模块,先在程序中添加如下语句:

#include <QEventLoop> 

紧接着,鼠标选中“

QEventLoop ”并按Fn+F1组合键,打开下图所示的 QEventLoop
类使用手册,可以看到该类所属的模块为 Core; 需要在 Pro 文件中添加 QT+=core; 这个是默认添加的;

 3.TARGET

指定编译后生成的目标文件名称

4.TEMPLATE

指定生成的目标类似 app, lib;

5. DESTDIR

指定最终文件生成的目录

6.LIBS:

指定工程要链接的库路径

7.INCLUDEPATH:

指定工程要加载的头文件路径

INCLUDEPATH += .

8.DEPENDPATH:

应用程序所依赖的搜索路径。

DEPENDPATH += . forms include qrc sources

9. INSTALLS:

指定make install后程序的目录

10.DEFINES 

应用程序所需的额外的宏定义列表。

11.SOURCES:

当前工程中的C++源文件,一般不需要手动修改

12.HEADERS

当前工程中的C++头文件

13.FORMS

当前工程中的ui文件

14.RESOURCES

当前工程的资源文件

Part 3: CONFIG 配置变量,指定了编译器所要使用的选项和所需要链接的库

   3.1 控制编译器标志的选项:

         release:应用程序将以release模式连编,如果“debug”被指定,它将被忽略。
        debug:应用程序将以debug模式连编。
        warn_on:编译器会输出尽可能多的警告信息,如果“warn_off”被指定,它将被忽略。
        warn_off:编译器会输出尽可能少的警告信息。

    3.2控制需要连接的库的选项:

     qt:应用程序是一个Qt应用程序,并且Qt库将会被链接。
        thread:应用程序是一个多线程程序。
        x11:应用程序是一个x11应用程序或者库。
        windows:只用于app模板,应用程序是一个windows下的窗口应用程序。
        console:只用于app模板,应用程序是一个windows下的控制台应用程序。
        dll:只用于lib模板,库是一个共享库。
        staticlib:只用于lib模板,库是一个静态库。
        plugin:只用于lib模板,库是一个插件,这将会使dll选项生效。

例如:CONFIG += qt debug,使用qt库的应用程序,debug版本。

**注意事项:**必须使用“+=”,不要使用“=”,否则原来的设置会被清除。

例:可以指定,release ,debug 依赖的不同库;

CONFIG(debug, release|debug){
  LIBS += 
} else {
  LIBS += 
}

例: window ,linux 使用不同版本库

CONFIG(debug, debug|release){  //处理debug
    win32{
    }
    unix{
    contains(QT_ARCH, arm64){
message("arm64")
}else{
message("x86")
}
    }
}else{     //处理release
    win32{
    }
    unix{
    }

 

Part4 : contains

判断编译环境是x86架构还是arm架构

contains(QT_ARCH, arm64){
    message("arm64") #在这里处理arm64所需
}else{
    message("x86")
}

内容比较多,可能要多次整理,今天就到这里

 


原文地址:https://blog.csdn.net/q610098308/article/details/144393311

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!