熟悉客户端 GUI 编程, 一个 Qt 综合小案例。(2018年 重新整理了一下)
简介
本练习参考&改造于
(配套书籍中讲的非常简单,核心代码给与了实现,但是实际上跑起来各种出错)
目的,纯练手或者作为新手的练习项目,至于为啥选”汽车”主题,可能兴趣使然吧.
涉及到的技术:
- 多窗口切换
- stacked widget/Tool Box容器
- 级联菜单
- Qt数据库操作(mysql)
- XML读写
- 界面设计, 布局, 图像绘制(直方图)
- 自定义控件等等
功能简单,代码量不多,重点也不在业务逻辑上(汽车销售业务的子集),中间穿插了其他的事情,不是一口气写完的。
总之 just for fun。
环境配置
准备数据
可以用代码先导入数据,我这边儿还是直接用 sql 语句直接导入了数据,方便。
sql 语句: (没有使用外键约束,人为控制)
代码如下:
1 | CREATE DATABASE IF NOT EXISTS qt_car DEFAULT CHARSET utf8 COLLATE utf8_general_ci; |
效果:
说明:也可以程序中操作数据库,不过一般开发,没人这么干
环境说明
macOS + Qt5.5 + Mysql5.7(远端数据库) + Clang-900.0.39.2
代码实现
主要功能切换都在主菜单上: 车辆管理 + 销售统计.
车辆管理
级联下拉框
spinBox下拉框联动
提交写入数据库, 取消撤销操作.
整体效果:
XML读写正常:
读写日志正常:
该部分的核心代码:
1 | MainWindow::MainWindow(QWidget *parent) : |
代码中,很多地方都直接忽略的错误处理。
销售统计
这里采用了两个自定义控件: 直方图.
以模块的方式组织进来的,可重用到其他项目.
直接在 第二个界面,提升组件为 “PieView” 即可,见下图。
核心代码如下:
1 | /*ui构造的时候就应该设置 model*/ |
效果大致如下:
但是自定义 UI 是个技术活,需要为当前项目定制或者微调。不展开。
该控件的核心代码:
1 | //.h文件中声明 |
小结
本来只是基于
几乎 Qt 关键的技术点都用到了, 收获还是不错的;至于离 Qt 高手的境界,还有很远的路呀。
btw: 那本书中错误不少呀。。。
如需完整代码,请邮件 gmail我。