前言

工作这么多年,各种行业的软件也写了不少,水平一般,借鉴了开源或别人的好的作品,记录下好的程序架构


一、程序的代码目录管理

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

工程文件的写法 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类,一些通用的基类,包括一些数据结构、枚举变量的定义均可划分到此大类。

  1. 配置文件管理
  2. 日志管理
  3. 通用基类
  4. 通用的数据模型类和 枚举变量类

尤其是qml程序,c++与qml文件的互相访问,设计到一些通用的枚举类型时,可以专门定义一个文件来存放这些枚举

2.图片资源类

开发QT程序,包括qml 程序,免不了要设计各种界面,引用各种的图片资源等,有以下几个建议

  1. 图片资源的命名规则,建议图片按照UI模块及大小来命名
  2. 程序界面的参数,包括各种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(

总结

未完待续

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐