| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> Qt 模块化开发之 pro 子项目开发 -> 正文阅读 |
|
[C++知识库]Qt 模块化开发之 pro 子项目开发 |
在实际开发中发现了将经常会复用到的地方模块化组件化会提高开发效率甚至文档、测试都可以复用,省去了很多麻烦,搭建一个软件就像“搭积木“,或者说”将不同零件用电线插销连接起来“一样,通过Qt框架的信号槽可以很自然地实现这个意图。??那么怎么实践它呢?于是我在一个项目中设计了将各个功能的界面保存在其自己的模块中的方式。 一、前提知识:1-头文件的引用、动态库的调用使用Qt编写模块化插件式应用程序_flyoxs的专栏-CSDN博客 简而言之,.lib称为导入库,相当于头文件;.dll是动态库文件,相当于cpp,头文件中函数的具体实现。 一般只有头文件而忘记引用动态库会提示“函数未定义”,反之会提示“未知符号” 二、使用套路:
优点: 三、visual studio下的粗略流程:1.主模块设置 左侧画红线的都是需要注意的设置,这里由于篇幅就补逐一截图了,反正都是碰到过坑的地方(写字是因为windows自带的截图快捷键没有编辑文字功能……) ? ? 2.辅助模块设置 除了主模块上述引用,还有生成需要是动态库类型 ? 总结一下:生成设置、引用设置、依赖路径设置、动态库引用设置、调试设置 顺便说一句,【C/C++】【链接器】这两个地方的所有设置都是给MSVC编译器的命令行添加参数而已,这个“命令行”才是最终目的,给链接器提供完整的编译命令。 比如下图是主模块的连接器的命令行,标出的"/NOLOGO"就是主模块截图中,链接器->常规->【取消显示启动版权标志 是(/NOLOGO)】中提供的参数。 另:windows? vs+qt插件下子项目的方法 动态库设置的官方参考文档: Compiler Options Listed by Category | Microsoft Docs 如果是windows下需要在相应主模块头文件注意加上如下宏定义,并且在vs的设置中加上相应宏定义(以下的意思是如果定义了则为编译库,否则是引用库)
注意模块的定义尽量合理,否则太多会让人抓狂,尽量高内聚,因为信号槽传递会比正常调用慢 还有模块内的引入其他头文件尽量是通文件夹的相对路径,否则主模块需要引入的文件夹会非常多。 ?我就不班门弄斧了,仅做如上几个关键点的截图。补充详见上面的那个微软vs的官方文档,各种斜杠参数都写得清清楚楚. 四、Qt Creator下的操作方式:1-创建子目录项目2-新建子项目在子项目的项目中pro文件中会出现相应的文件夹引入 在新建的子项目中可以有“Qt Widget Application”,这样就可以联同界面一同开发(一种惯例是所有带有界面的放到主模块下,其他的均以动态库形式) 3-子项目是模块,对子项目进行开发的要点子项目的TEMPLATE 从APP改为LIB 留一个主界面的模块为APP,并且保留main.cpp,其他模块的main.cpp删掉 然后就是开发各个子模块(看到有人后缀pri的,我不太清楚是怎么回事) 块内的引入其他头文件尽量是通文件夹的相对路径,否则主模块需要引入的文件夹会非常多。 4-集合到一起在主界面的那个模块引入各个模块,并连接各个信号槽 (自己想到的小技巧:将每个模块留一个对外接口模块cpp,并留统一且通用的信号槽【第一个参数是int可以在全局枚举,第二个参数是char*可以传输1个参数数据,然后在自己的槽中依据第一个参数的全局枚举来分拣执行相应的操作】)这样可以充分利用信号槽。 主模块需要引入各个模块的文件夹路径,动态库。 5-编译编译会出现各种问题,但一般流程不变:qmake、重新构建、执行或调试 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:56:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |