Qt开发之路--模块化设计.pri文件

Qt开发之路--模块化设计.pri文件

  • QT pro文件和pri文件的区别
  • Chapter1 Qt开发之路--模块化设计.pri文件
    • 一:.pri文件简介
    • 二:通过.pri模块化设计
    • 三:结尾
  • Chapter2 Qt开发大型项目时,通过.pri文件将众多文件按功能模块分类显示
  • Qt中多pro与多pri合作编程


QT pro文件和pri文件的区别

pro文件是一个工程文件,就是可以独立执行的项目的最高首领;

pri文件比pro文件简单的多,单纯的为了编者逻辑上的区分或者思路的厘清,不具备单独执行的条件

一般pri文件包含:

HEADERS += \page/systemsetup.h \SOURCES += \page/systemsetup.cpp \

也就是其头文件和源文件;

其实用pri文件的地方完全可以用pro文件代替,只不过前者简单实用;

Chapter1 Qt开发之路–模块化设计.pri文件

原文链接:https://blog.csdn.net/weixin_43229139/article/details/110874907

一:.pri文件简介

i 是?包含(include)的首字母。类似于C、C++中的头文件,我们可以把 *.pro 文件内的一部分内容单独放到一个 *.pri 文件内,然后包含进来。

例如,我们将源文件的设置独立出来,放到propriprfprl.pri文件内:

SOURCES += main.cpp/widget.cpp
HEADERS  += widget.h
FORMS    += widget.ui

这时,我们的 propriprfprl.pro 文件就可以简化为:

TEMPLATE = app
CONFIG += QT
QT += core guiTARGET = propriprfprl
include(propriprfprl.pri)

如果一个大点的项目,含有多个*.pro文件呢,这些pro需要有些共同的设置或需要的文件,这时就很有必要了。

二:通过.pri模块化设计

对于QT项目,默认情况下所有的文件都是在同一个文件夹下进行开发的,当做一个项目规模相对较大的时候文件很多导致维护及其困难,所以pri对文件进行模块化开发至关重要,pri进行模块化无非就是将相同业务逻辑的代码放到同一个文件夹下进行管理。
当你的工程文件变多时,你的工程逻辑结构会变得相对复杂,这时点开你的工程节点会发现节点下都是这样长长的一串,什么模块的文件都挤在一个节点下,很臃肿。如下图模块化前后对比:
在这里插入图片描述
在这里插入图片描述

第一步:到项目根目录下新建你自己的业务逻辑的文件夹,Dialog、Widget文件夹如下图:
在这里插入图片描述
第二步:将相同的功能文件移动到对应的文件夹中。
在这里插入图片描述
在这里插入图片描述
第三步:在新建的文件夹下新建 " .pri " 文件,新建.pri文件名称规则(文件夹名称+.pri),新建.pri文件后,手动添加内容,或者根据第五步添加。
在这里插入图片描述
第四步:在项目根目录的.pro文件中添加如下内容。
INCLUDEPATH
include

QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = TestQt
TEMPLATE = appSOURCES += main.cpp\mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.uiRESOURCES += \image.qrc
DISTFILES +=INCLUDEPATH += $$PWD/Dialog  # 工程编译时,会去INCLUDEPATH列表下的目录搜索文件
include ($$PWD/Dialog/Dialog.pri) # include()包含的文件会显示在工程结构图中INCLUDEPATH += $$PWD/Widget  # 工程编译时,会去INCLUDEPATH列表下的目录搜索文件
include ($$PWD/Widget/Widget.pri) # include()包含的文件会显示在工程结构图中

第五步:qmake后,分别右键Dialog、Widget添加对应文件夹下的文件。.pri文件内容如下:
Dialog.pri文件:

FORMS += \$$PWD/dialogone.ui \$$PWD/dialogtwo.uiHEADERS += \$$PWD/dialogone.h \$$PWD/dialogtwo.hSOURCES += \$$PWD/dialogone.cpp \$$PWD/dialogtwo.cpp

Widget.pri文件:

FORMS += \$$PWD/widgetone.ui \$$PWD/widgettwo.uiHEADERS += \$$PWD/widgetone.h \$$PWD/widgettwo.hSOURCES += \$$PWD/widgetone.cpp \$$PWD/widgettwo.cpp

第六步:效果图
在这里插入图片描述

三:结尾

写好一个.pro文件非常有助于你去梳理项目的结构组成,一个良好的框架,也往往对开发维护有着事半功倍的效果。

Chapter2 Qt开发大型项目时,通过.pri文件将众多文件按功能模块分类显示

原文链接

在这里插入图片描述
后期我们要维护代码的时候,要找某个功能的代码,就可以先找到对应功能模块的目录,然后在该目录下找对应的类文件即可。这可是经过验证的提高开发效率的技巧!

Qt中多pro与多pri合作编程

原文链接:https://blog.csdn.net/u014597198/article/details/52679142

ri文件跟pro文件没有本质区别,都是起到包含路径等作用,区别在于pro文件是主要文件,pri是附属文件。

要是项目相对来说比较复杂,比如多平台开发时,需要用到多pri与pro共同合作,当然也可以编辑成静态库或者动态库的形式,现在讲一下如何实现多pri。

一个pro可以包含多个pri,例如:
include(win32.pri)
include(macx.pri)
include(ios.pri)
include(android.pri)

看两个实际项目中pro与pri用法,希望可以对您架构设计提供了一定的参考价值。

实例1:(按照功能来设计架构)
在这里插入图片描述

实例2:(按照平台和主要功能进行架构)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/160577.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

概率神经网络分类问题程序

欢迎关注“电击小子程高兴的MATLAB小屋” %% 概率神经网络 %% 解决分类问题 clear all; close all; P[1:8]; Tc[2 3 1 2 3 2 1 1]; Tind2vec(Tc) %数据类型的转换 netnewpnn(P,T); Ysim(net,P); Ycvec2ind(Y) %转换回来

7天狂揽 1.3w star 的 MetaGPT,他们的目标让软件公司为之一惊

在 AI 产品爆炸的今天,拥有各种本领的 AI 产品层出不穷,但 MetaGPT 的出现仍然显的格外耀眼,其可以实现只输入单一 prompt,就可以输出需求分析、需求文档、技术架构、最终代码等等产物,这相当于一个开发团队的输出成果…

Linux:【Kafka四】集群介绍与单机搭建

目录 环境简介 一、搭建kafka集群 1.1、复制出两个kafka的配置文件 1.2、修改配置文件中的如下属性 二、启动kafka集群 三、可校验kafka三个节点是否均启动成功 四、查看集群中主题的分区和副本 4.1、新建一个包含了分区和副本的主题 4.2、查看该主题的详细信息 五、…

Android查看签名信息系列 · 使用逆向分析工具JadxGUI获取签名

前言 Android查看签名信息系列之使用逆向分析工具JadxGUI获取签名,通过这种方式,可以获取到的签名信息包括:MD5、SHA1、SHA-256、公钥(模数)等信息 实现方法 1、进入JadxGUI目录下的lib文件夹内,找到jadx-gui-1.4.7.jar文件 2、…

计算机网络第2章-HTTP和Web协议(2)

Web和HTTP 一个新型应用即万维网(World Wide Web)Web。 HTTP概况 Web的应用层协议是超文本传输协议(HTTP),它是Web的核心。 HTTP由两个程序实现:一个用户程序和一个服务器程序。 Web页面(W…

VSCode 调试 u-boot

文章目录 VSCode 调试 u-boot调试配置启动 u-boot 脚本调试界面重定向之后继续调试参考 VSCode 调试 u-boot 调试配置 参考 qemu基础篇——VSCode 配置 GDB 调试 要想调试 u-boot 只需要再添加一个 u-boot 的配置即可 {"version": "0.2.0","conf…

如果你有一次自驾游的机会,你会如何准备?

常常想来一次说走就走的自驾游,但是光是想想就觉得麻烦的事情好多:漫长的公路缺少娱乐方式、偏僻拗口的景点地名难以导航、不熟悉的城市和道路容易违章…… 也因为如此,让我发现了HUAWEI HiCar这个驾驶人的宝藏! 用HUAWEI HiCar…

科研上新 | 第2期:可驱动3D肖像生成;阅读文本密集图像的大模型;文本控制音色;基于大模型的推荐智能体

编者按:欢迎阅读“科研上新”栏目!“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里,你可以快速浏览研究院的亮点资讯,保持对前沿领域的敏锐嗅觉,同时也能找到先进实用的开源工具。 本期内容速览 …

16 个 Linux 最佳 Markdown 编辑器(2)

对于初学者来说,Markdown 是一个用 Perl 编写的简单且轻量级的工具,它使用户能够编写纯文本格式并将其转换为有效的 HTML(或 XHTML)。它是一种易于阅读、易于编写的纯文本语言,也是一种用于文本到 HTML 转换的软件工具…

操作系统四大特征

OS四大特征 1.OS的并发性(同一时间间隔内执行和调度多个程序的能力) 宏观上,处理机同时执行多道程序 微观上,处理机在多道程序间高速切换(分时交替执行),微观上并非是同时执行的。 关注单个处理机同一时间段内处理任…

IOS课程笔记[4-5] 计算器实现与更换主题 的使用

计算 控件介绍 文本输入 设置键盘格式为NumberPad字符串与数字转换方法 NSInteger num2 [str2 integerValue]; 弹窗控件 UIAlertController 新版本弹窗 UIAlertController *alert [UIAlertController alertControllerWithTitle:"error" message:"输入有…

数据结构-----红黑树的插入

目录 前言 红黑树的储存结构 一、节点旋转操作 左旋(Left Rotation) 右旋(Right Rotation) 二、插入节点 1.插入的是空树 2.插入节点的key重新重复 3.插入节点的父节点是黑色 4.插入节点的父节点是红色 4.1父节点是祖父…

软考-网络安全体系与网络安全模型

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 by 2023年10月 网络安全体系相关安全模型 BLP机密性模型 BLP(Biba-格雷泽-麦克拉伦&#x…

嵌入式平台的电源总结

本文引注: https://mp.weixin.qq.com/s/PuSxHDFbJjjHEReukLSvyg 1.AC的定义 Alternating Current(交流)的首字母缩写。AC是大小和极性(方向)随时间呈周期性变化的电流。电流极性在1秒内的变化次数被称为频率,以Hz为单位…

Sql Server 数据库中的所有已定义的唯一约束 (列名称 合并过了)

查询Sql Server Database中的唯一约束 with UniqueBasic as (SELECTtab.name AS TableName, -- 表名称idx.name AS UniqueName, -- 唯一约束的名称col.name AS UniqueFieldName -- 唯一约束的表字段FROMsys.indexes idxJOIN sys.index_columns idxColON (idx.object_id idxCo…

【分享Python代码】图片转化为素描画

哈喽,大家好,我是木易巷~ 代码生成效果图 原图: 生成图: 原图: 生成图: 准备工作 Python编程首先需要安装环境,下面是详细步骤: 会的小伙伴可自行跳过,代码在最后 1…

spring boot RabbitMq基础教程

RabbitMq 由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不同语言的客户端。 但是,RabbitMQ官方提供的Java客户端编码相对复杂,一般…

idea使用Spring Initializer创建springboot项目的坑【保姆级教学】

项目场景: 提示:这里先简述项目创建后遇到的问题和解决方案: idea 使用 Spring Initializer 创建springboot项目后, 有以下问题: ① 右键没有Run ② 右键New新建文件发现无Java Class选项 然后解决掉 ①② 问题后出…

总结:JavaEE的Servlet中HttpServletRequest请求对象调用各种API方法结果示例

总结:JavaEE的Servlet中HttpServletRequest请求对象调用各种API方法结果示例 一方法调用顺序是按照英文字母顺序从A-Z二该示例可以用作servlet中request的API参考,从而知道该如何获取哪些路径参数等等三Servlet的API版本5.0.0、JSP的API版本:…

WordPress 常规设置页面调用媒体中心上传图片插入URL(新版可用)

首先,我们需要在主题或插件文件夹中创建一个 JavaScript 文件(如:media-uploader.js),该文件中包含如下代码。 /*** 媒体中心上传 js **/ jQuery(document).ready(function($){var mediaUploader;$(#upload_image_but…