首页 > 其他分享 >Qt 项目架构之四:实战项目

Qt 项目架构之四:实战项目

时间:2023-02-07 12:13:51浏览次数:59  
标签:Control src Qt 项目 Util cpp 之四 目录

下面实现一个最基本的架构项目。

一、程序的代码目录管理

代码目录,就是你存放源码的目录,一般程序都划分为各种模块来实现,所以为每个模块单独创建一个目录来存放,是比较推荐的存放方式。

工程文件的写法 pro:

QT       += core gui network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked 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 it uses 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

SOURCES += \
    main.cpp \
    MainWidget.cpp \
    src/Control/CustomTooltip.cpp \
    src/Control/MyIconBtn.cpp \
    src/Control/MyTitleBar.cpp \
    src/HoverMenu/HoverMenu.cpp \
    src/Util/AppCommon.cpp \
    src/Util/AppConfig.cpp \
    src/Util/AppData.cpp \
    src/Util/AppEvent.cpp \
    src/Util/AppInit.cpp \
    src/Util/LogHandler.cpp \
    src/Util/SingleApplication.cpp

HEADERS += \
    MainWidget.h \
    src/Control/CustomTooltip.h \
    src/Control/MyIconBtn.h \
    src/Control/MyTitleBar.h \
    src/HoverMenu/HoverMenu.h \
    src/Util/AppCommon.h \
    src/Util/AppConfig.h \
    src/Util/AppData.h \
    src/Util/AppEvent.h \
    src/Util/AppInit.h \
    src/Util/LogHandler.h \
    src/Util/SingleApplication.h

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

RESOURCES += \
    resource/Resource.qrc

TRANSLATIONS += resource/Translate/Translate_EN.ts \
               resource/Translate/Translate_CH.ts

Qt 应用程序,通用的功能模块,一般都会有 资源文件、第三方依赖库文件等,为每个模块分别创建一个目录。

Qt_Framework_A.png


上面图片的 resource 文件夹目录为:

Qt_Framework_B.png


上面图片的 src 文件夹目录为:

Qt_Framework_C.png


QtCreator 项目视图为:

Qt_Framework_D.png


二、通用模块划分

2.1 工具类

类似全局的函数,提供代码通用工具功能,一般放在 src/Util 目录下。

  • 全局配置文件管理类 AppConfig 用来读写对应项目的配置文件。
  • 全局变量管理类 AppData 用来设置项目中用到的所有全局变量。
  • 全局事件中转处理类 AppEvent 用来中转系统中各种跨多个 UI 以及多个类的事件。
  • 全局程序初始化类 AppInit 用来做一些程序启动后的初始化处理。
  • 全局通用类 AppCommon,定义一些例如 delay 等常用函数。
  • 其它更多的一些通用工具类,例如 LogHandler 日志管理类、SingleApplication 单例和全局事件过滤类。

2.2 窗口部件类

开发 Qt 程序,免不了要自定义一部分窗口部件。

  • 一些自定义控件,例如自定义按钮、自定义编辑框等,一般放在 src/Control 目录下。
  • 一些提示框,例如警告框、确认框、提示框等,可以放在 src/TipBox 目录下。

三、源码下载

https://github.com/confidentFeng/QtAppProject


标签:Control,src,Qt,项目,Util,cpp,之四,目录
From: https://www.cnblogs.com/linuxAndMcu/p/17097919.html

相关文章

  • Qt 项目架构之一:全局类说明
    这里讲解一些全局类,一般都放在Util这个文件夹内。Util是工具的意思,一般来说,常常用来描述和业务逻辑没有关系的数据处理。一、全局配置文件全局配置文件管理类AppConf......
  • Qt 项目架构之二:架构设计
    除了极小的微型demo级别项目外,其余项目建议用pri分门别类不同文件夹存放代码文件,方便统一管理和查找。同类型功能的类建议统一放在一起,如果该目录下代码文件数量过多,也......
  • MQTT协议详解
    MQTT协议详解 MQTT是基于Publish/Subscribe(发布订阅)模式的物联网通信协议特点:简单易实现支持Qos(服务质量)报文小MQTT协议构建于TCP/IP协议之上发布订阅模式:......
  • 线上项目的服务部署
     跨服的部署:1跨服节点1的节点:route、manage、db、idip、common2 跨服节点2-3的节点:route、manage、db、idip3 跨服节点4-10的节点:route、manage、......
  • PyQt 菜单栏的使用
    importsysfromPySide6importQtCore,QtWidgetsfromPySide6.QtWidgetsimport*frommenu_uiimportUi_MainWindow//导入uiclassmenu(QMainWindow):def_......
  • 智慧工地、雪亮工程、明厨亮灶等各类视项目通过GB28181汇聚视频监控到LiveGBS流媒体管
    目前市面上各类监控设备(摄像头、录像机、监控管理平台)等基本都支持GB28181协议。当设备通过GB28181统一汇聚到LiveGBS流媒体视频平台后,LiveGBS管理页面会管理所有接入进来......
  • spring项目slf4j使用
    idea安装lombok pom新增包<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><opt......
  • vue3.0 同一项目中调用多个域名的请求
    1.简单粗暴形式:复制多个request.js文件,设置不同的baseUrl,根据需要引用不同的request.js文件。可以解决问题,但不推荐使用2.参数配置形式:利用参数配置,可灵活的调用多个不......
  • 如何在 C# 项目中链接一个文件夹下的所有文件
    在C#项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码。常见的比如链接AssemblyInfo.cs文件,这样我们就可以在项目中使用这个文件中的版本号等信息。......
  • 【jmeter性能项目实战-03】轻商城项目性能测试计划
    一、测试背景轻商城是公司新开发的一个电商项目,为了保证项目上线后能够稳定的运行,且在后期推广中能够承受用户的增长,需要对项目进行性能测试。二、测试目的对新电商项目......