QT4 框架 - brosch cloud_print

一、编译环境
    1、apt install qt4-default
    2、每次 "qmake -project" 后都要在 【xxx.pro】 文件尾部加入 "QT += network"
    3、 【xxx.pro】 文件内去掉对rapijson文件的编译
    4、不要用Qt5,需要大量修改

二、基础框架目录结构

    ============= 主目录结构 ====================
    【xxxx_workspace】(主工作空间)
        |
        +-- 【xxxx】 (需要编译的代码都在里面)
        |      |
        |      +-- 【source】 (源码目录)
        |      |      |-- main.cpp 及各类h,cpp文件
        |      |
        |      +-- 【build】  (编译目录)
        |             |-- 编译过程文件(.o),及可执行文件
        |       
        +-- 【include】 (不能用于编译的第三方代码,如rapidjson)
        |
        +--  readme.txt (说明文档)
    ============================================

    【xxxx】内结构
    1、main.cpp为桌面程序的入口,调用MyMainFrame来启动程序,不用修改
    2、frame目录
        MyMainFrame: 最基本的根视图类
        BackStageThread: 后台线程
        Constant: 各种CSS,远程服务器地址,全局变量和常量
    3、page目录
        MyMainFrame内切换的各个页面
    4、dialog目录
        一般用于弹窗,其父视窗为MyMainFrame内的mainLayout
    5、libs
        各种辅助类,重要的如下:
        1、CzAlert:提示框用到的
        2、CzKeyboard:屏幕键盘
        3、CzQtEmbeded:添加各种控件,网络信息及设置,http请求,重启等常用操作
        4、CzTcpServer:Tcp服务器
        5、CzTcpServerThread:CzTcpServer的子线程,不会单独拿出来用
        6、QRoundProgressBar.cpp:chart控件
    6、image目录
        图片,调用时路径:(QString)ROOT_PATH+"image/main_bg.jpg"
    7、user目录
        用于修改顶部栏(TopBar),底部栏(BottomBar),各页面的管理(PageManager)

三、基础框架所含功能
    1、启动界面生成一个根视图
    2、生成全局九宫格的尺寸,只需调整以下内容(Constant.cpp/【界面参数调整】 区)
        Constant内的全局变量即可:topHeightRate,bottomHeightRate,leftWidthRate,rightWidthRate
        define FONT_SIZE_DEFAULT 基础文字大小,便于统一修改
    2、顶部栏显示(TopBar)
        时间,
        有线网卡MAC 地址(Constant::enthMACID)
        联网网络状态(用ping baidu来判断)
        一个重新启程程序的按钮
    3、中部生成一个容器 (由user/PageManager内的各个Page实例来填充)
    4、底部栏容器 (BottomBar,导航栏)
    5、启动后台线程(BackStageThread)连接TCP服务器,
        并在onTcpClientXXXX的slot中处理连接状态及接收讯息,
        后台线程每10秒会上报一次网络状态
    6、所有的其他类的回调信息slot都在 MyMainFrqme::onDebugMsg()内
    7、前台有个1秒定时器,可供操作在MyMainFrame::oneSecondTimerUpdate()
    8、切换中间页面只需调用
        MyMainFrame::getInstance()->replacePage(QFrame * newPage)
        页面都继承自QFrame
    9、点及左上角时间可拉开debugPad弹层,可在Constant.cpp钟设置useDebug来开关
        实现位置在 MyMainFrame::toggleDebug

四、创建新项目需做的准备
    1、复制项目
    2、清空page,dialog目录,或留几个范例文件
    3、修改 Constant.h 的 TCP 服务器信息,如果没有就设成如下,程序会自动判断,不去链接
        #define TCP_SERVER_IP ""
        #define TCP_SERVER_PORT 0
    4、修改 Constant.cpp 的 界面参数调整 区
    5、Constant.cpp 设置是否启用debug(点击事件)
    6、修改user下的界面文件,尤其是PageManager,每加入一个page,必须listPage << pageXXX

五、长连接协议
    客户端每秒发送一次心跳,每10次发送一个mac,服务端响应"1",
    服务端收到后判断长度为12则保存至线程的mac变量里,否则丢弃,

    当服务端主动发送时,客户端收到的信息处理:
    1、判断与上次接收的时间间隔,小于10ms,且内容相同,丢弃
    2、去掉第一个字符,并判第二个是不是"{",然后解析json

六、坑
    1、单例的写法在根视图一定要在实例化后,再用该实例去init后,然后才能往后走,
        因为在实例化时,其他类调用到根视图的getInstance()时会找不到,导致各种怪异
        参见 MyMainFrame 
    2、如要显示鼠标,则设置Constance内的 #define SHOW_MOUSE true,否则为false

七、项目中新建一个类的操作
    1、Constant.h中加入
        class 类名
    2、类必须#include "../frame/Constant.h"
    3、【项目根目录】/xxx.pro中
        HEADERS += 。。。。\
                类名.h
        SOURCES += 。。。。\
                类名.cpp
    4、进入 build,运行指令
        qmake ..
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成震1971

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值