QT的工程文件解读

这篇具有很好参考价值的文章主要介绍了QT的工程文件解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如下是QT的pro文件的部分内容,逐句解释一下#include(../common.pri)的文件内容:

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
QT *= network
greaterThan(QT_MAJOR_VERSION, 4): QT *= widgets

这是一个Qt工程项目的pro文件,pro文件定义了Qt项目的构建规则和相关配置。下面是对这个pro文件代码的解释:

1. `#include(../common.pri)`: 引用上级目录中的common.pri文件。common.pri文件可能包含了一些常用的宏定义或配置,避免在所有项目上都重复定义,可以在多个项目之间共享。

2. `INCLUDEPATH += $$PWD`: 向项目中添加一个编译器搜索路径,将当前工程目录添加到项目包含路径列表中。

3. `DEPENDPATH += $$PWD`: 向项目中添加一个编译依赖搜索路径,将当前工程目录添加到项目依赖路径列表中。

4. `QT *= network`: 在Qt库的模块中包含了网络组件。在依赖该项目时,将会自动链接Qt的网络库。

5. `greaterThan(QT_MAJOR_VERSION, 4): QT *= widgets`: 如果当前Qt版本大于4,那么也将项目中添加窗口组件。即当前Qt版本>=5时,将包含窗口组件库。

 在这里为什么`QT *= network`不是`QT += network`

在Qt中,QT宏定义作为Qt库的主要组成部分,用于头文件包含、链接库依赖和QT宏的定义等。以下是QT宏的四种用法:

1. `QT += module`:链接一个Qt模块库。
2. `QT -= module`:移除一个Qt模块库。
3. `QT = value`:定义一个宏,给一个值。
4. `QT *= value`:附加一个值到一个宏中。

`QT += module`是表示链接Qt模块库的操作,而`QT *= network`是附加一个值到QT宏中,即添加网络模块到原有的QT值中,其效果和`QT += network`相同,只是两种写法的语法略有不同。

如下是QT的pro文件的部分内容,逐句解释:

qtsingleapplication-uselib:!qtsingleapplication-buildlib {
    LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME
} else {
    SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp
    HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h
}

win32 {
    contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLEAPPLICATION_EXPORT
    else:qtsingleapplication-uselib:DEFINES += QT_QTSINGLEAPPLICATION_IMPORT
}

这是一个Qt工程项目的pro文件,下面是代码的解释:

1. `qtsingleapplication-uselib:!qtsingleapplication-buildlib { ... } else { ... }`:这是一个条件分支语句。如果 `qtsingleapplication-uselib` 宏未定义,或者 `qtsingleapplication-uselib` 宏定义为0,则执行 `{...}` 中的语句;否则执行 `else {...}` 中的语句。

2. `LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME`:将指定的路径和库文件添加到链接器的参数列表中,使链接器可以找到库文件并将其链接到生成的可执行文件中。

3. `SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp`:向项目中添加源文件 qtsingleapplication.cpp 和 qtlocalpeer.cpp。

4. `HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h`:向项目中添加头文件 qtsingleapplication.h 和 qtlocalpeer.h。

5. `win32 {...}`: 这是一个win32平台特定的条件判断,其中 `...` 是一组表达式和语句,只有当表达式成立时才会执行语句块。

6. `contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLEAPPLICATION_EXPORT`: 如果当前项目是一个库,并且是一个分享库,则定义 QT_QTSINGLEAPPLICATION_EXPORT 宏,这个宏用于在Windows平台上导出函数。

7. `else:qtsingleapplication-uselib:DEFINES += QT_QTSINGLEAPPLICATION_IMPORT`:如果 `qtsingleapplication-uselib` 宏已经定义且值为1,则定义 QT_QTSINGLEAPPLICATION_IMPORT 宏用于在Windows平台上导入函数。

总体来说,这些代码用于在Qt项目中包含单例模式的库 qtsingleapplication,并且适配在Unix和Windows操作系统平台上进行编译的需求。在Unix平台上,只需要添加实现和头文件即可,而在Windows平台上,还需要根据库类型的不同(shared或static)添加导出或导入宏来适配库的编译需求。文章来源地址https://www.toymoban.com/news/detail-481005.html

到了这里,关于QT的工程文件解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vivado 工程文件内容说明

    如上图所示,Vivado工程文件中包含的各个类型文件具体可分为: project_name.cache:Vivado 软件的运行缓存 project_name.hw: 所有波形文件 project_name.ip_user_files:用户关于 IP 的文件 project_name.runs:编译与综合结果 impl_1 文件夹中的.bin 和 .bit 即为编译生成的可执行文件 project_name.sdk:

    2024年02月04日
    浏览(36)
  • 【批量区域识别内容重命名】批量识别图片区域文字并重命名,批量图片部分识别内容重命文件,PDF区域识别提取重命名

    我们在工作和生活中经常遇到这样的需求:比如将以下的图片区域识别进行重命名,批量识别后改成以时间和工作内容重命名,便于日后检索,快速查询 首先我们拍摄照片用到的是水印相机,这里的文字呢我们需要加个背景,这样在文字识别就很容易的被识别,准确率也非常

    2024年04月25日
    浏览(51)
  • Qt 工程 pro文件

    工作中,感觉pro文件的有些内容真不太懂,现系统性的学习一下。于此备录,分享共勉。 为了更好的理解,先创建一个简单的工程作为实践。 【1】创建一个pro文件 1.1 新建proDemo工程。步骤如下:Qt Creator---New Project---应用程序---Qt Widgets Application---名称为:proDemo(创建路径自

    2024年02月04日
    浏览(35)
  • QT的工程文件认识

    目录 1、QT介绍 2、QT的特点 3、QT模块 3.1基本模块 3.2扩展模块 4、QT工程创建 1.选择应用的窗体格式 2.设置工程的名称与路径 3.设置类名 4.选择编译器 5、QT 工程解析 xxx.pro 工程配置 xxx.h 头文件 main.cpp 主函数 xxx.cpp 文件 6、纯手工创建一个QT 工程 1.创建一个纯C++ 工程 2.在xxx.p

    2024年02月12日
    浏览(45)
  • Java Excel 打开文件报发现“xx.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复问题解决

    发现“文件.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复? 1、后端的导出接口写的不对,又返回流数据,又返回响应体数据,导致前端将流数据和响应体数据都下载到了excel文件中。  解决办法: 接口仅返回流数据即可。

    2024年02月13日
    浏览(63)
  • 二、QT工程中各个文件代表的含义

    其中TARGET可以通过更改名字生成不同.exe文件如下: 从TARGET = 01_FirstProject 变为TARGET = 01_SecondProject Core核心模块 GUI图形模块 Network网络通信模块 Mulitmedia多媒体模块 SQL数据库模块 Test测试模块 Widgets窗口中的内容单独的写到这个模块中

    2024年02月12日
    浏览(39)
  • QT6为工程添加资源文件,并在ui界面引用

    这种方式虽然添加到了工程中,但不能在UI设计界面完成引用。主要原因可能是未把文件放入到项目资源文件中,以下面一种方式可以看出区别。 选择qt resource file,点击选择, 然后通过下面的设置得到一个.qrc的资源文件, 鼠标右键这个资源文件,第一种添加的文件在qrc文件

    2024年02月11日
    浏览(46)
  • Qt Creator创建Python界面工程并打包为可执行exe文件

    一、QT6安装 QT6安装不是本文重点,请参考网上其他教程。 二、QT6创建Python界面工程 1.打开QT Creator,按照下面步骤创建Python界面工程。 输入工程名称pytest 输入类名:myMainWindow,基类选择QMainWindow 2.添加资源文件resources.qrc

    2024年02月08日
    浏览(56)
  • Qt 多线程、信号和槽连接方式推荐connect(Sender,Singnal,Receiver,Slot,ConnectMode);如下图所示

    connect(主线程A,信号A,子线程B,槽函数B,DirectConnection /AutoConnection ); connect(子线B,信号B,主线程A,槽函数A,QueueConnection  );

    2024年02月13日
    浏览(38)
  • 【问题记录】Visual Studio 下的Qt工程无法打开 “xxx.ui“ 文件和LNK1104 无法打开文件“Qt5Cored.lib”错误

    Windows 11 家庭中文版 Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.5.3 qt-vsaddin-msvc2022-2.9.1-rev.06 VS下Qt环境准备好后,创建了Qt工程然后点击 Form Files 下的 “ xxx.ui ” 文件,在弹出  Qt 设计师 界面后闪退并显示如下错误 运行报错: LNK1104 无法打开文件“Qt5Cored.lib” 工具栏

    2024年02月05日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包