Qt 之 程序架构
文章目录前言一、程序的代码目录管理二、通用模块划分1.工具类2.图片资源类图片定义文字大小定义总结前言工作这么多年,各种行业的软件也写了不少,水平一般,借鉴了开源或别人的好的作品,记录下好的程序架构一、程序的代码目录管理代码目录,就是你存放源码的目录,一般程序都划分为各种模块来实现,所以为每个模块单独创建一个目录来存放,是比较推荐的存放方式。工程文件的写法 pro:include(src/comm
前言
工作这么多年,各种行业的软件也写了不少,水平一般,借鉴了开源或别人的好的作品,记录下好的程序架构
一、程序的代码目录管理
代码目录,就是你存放源码的目录,一般程序都划分为各种模块来实现,所以为每个模块单独创建一个目录来存放,是比较推荐的存放方式。
工程文件的写法 pro:
include(src/common/common.pri)
include(src/manager/manager.pri)
include(src/wifi/wifi.pri)
include(src/bluetooth/bluetooth.pri)
include(src/protos/proto.pri)
include(src/httprequest/httprequest.pri)
可以看出,上面每一个pri文件,均是一个单独的功能模块。
qt应用程序,通用的功能模块,一般都会有 资源文件、第三方依赖库文件、qml文件、翻译文件等,为每个模块分别创建一个目录

上面图片的src文件夹目录为:
qtcreator SDK 项目视图为:
总体上,程序的代码目录比较清晰,干净。
二、通用模块划分
1.工具类
类似全局的函数,提供代码通用工具功能,可以包含utils类,一些通用的基类,包括一些数据结构、枚举变量的定义均可划分到此大类。
- 配置文件管理
- 日志管理
- 通用基类
- 通用的数据模型类和 枚举变量类
尤其是qml程序,c++与qml文件的互相访问,设计到一些通用的枚举类型时,可以专门定义一个文件来存放这些枚举
2.图片资源类
开发QT程序,包括qml 程序,免不了要设计各种界面,引用各种的图片资源等,有以下几个建议
- 图片资源的命名规则,建议图片按照UI模块及大小来命名
- 程序界面的参数,包括各种UI颜色、大小等定义
示例如下:
其中AppThemeBase.qml定义了程序界面所有的资源及定位宽高信息
图片定义
property string icon_volume_high : "qrc:/images/vedio_icon_volume_high.png"
property string icon_volume_low : "qrc:/images/vedio_icon_volume_low.png"
AppImageBase {
anchors.left: parent.left
anchors.leftMargin: 10
anchors.verticalCenter: parent.verticalCenter
source: AppTheme.currentTheme.icon_volume_high
}
文字大小定义
// Font Size
readonly property int font_size_cn_64: 64
readonly property int font_size_cn_32: 32
readonly property int font_size_cn_28: 28
readonly property int font_size_cn_24: 24
readonly property int font_size_cn_22: 22
AppText {
id: txtKey
visible: !imageKey.visible
anchors.centerIn: parent
font.pixelSize: AppTheme.currentTheme.font_size_cn_22
font.weight: Font.DemiBold
font.family: "Gilroy"
color: btnEnabled ? AppTheme.currentTheme.color_gray_contrast_strongest_light : AppTheme.currentTheme.color_gray_contrast_strong_dark
}
3.文本国际化类
很多app都有国际化需求,可以把所有用到的字符串定义到一个单独文件来管理,这样国际化的时候会很方便
// HistoryPage.qml
readonly property string no_history: qsTr("您还没有查词记录哦",
"您还没有查词记录哦")
// RecordPage.qml
readonly property string create_new_record: qsTr("创建新录音",
"创建新录音") + translator.i18n
readonly property string login_sync_record: qsTr(
总结
未完待续
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)