Qt开发自定义模型类(上)
一、自定义模型类
1、 QStandardItemModel 是一个通用的模型类
(1)、能够以 任意的方式 组织数据(线程、非线性)
(2)、数据组织的 基本单位为数据项(QStandardItem)
(3)、 每一个数据项 能够存储多个具体数据(附加数据角色)
(4)、每一个 数据项 能够对数据状态进行控制(可编辑、可选...)
2、Qt中的通用模型类QStandardItemModel
(1)、QStandardItemModel 继承自抽象的模型类QAbstractItemModel
(2)、QStandardItem与QAbstractItemModel 是聚合关系
(3)、QAbstractItemModel里面 存储的东西是各种各样的
(4)、 变体类型可以返回不同的类型
3、Qt中的变体类型QVariant(类型可变)
(1)、 QVariant是一个 用于封装的类型
(2)、QVariant能够表示 大多数常见的值类型
(3)、QVariant 每次只能封装(保存)单一类型 的值
(4)、QVariant的意义在于 能够设计"返回类型可变的函数"
4、变体类型QVariant中的常用成员函数
main.cpp #include #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QVariant v1(1); QVariant v2(3.14); QVariant v3("520"); QVariant v4(QPoint(15, 15)); QVariant v5; qDebug() << v1.type();//指的是v1存储的值的类型 qDebug() << v1.typeName(); qDebug() << v1.toInt(); qDebug() << endl; qDebug() << v2.type(); qDebug() << v2.typeName(); qDebug() << v2.toInt();//会发生截断 qDebug() << v2.toDouble(); qDebug() << v2.value();//注意使用方法,模板 qDebug() << endl; qDebug() << v3.type(); qDebug() << v3.typeName(); qDebug() << v3.toInt(); qDebug() << v3.value(); qDebug() << endl; bool k = true; qDebug() << v4.type(); qDebug() << v4.typeName(); qDebug() << v4.toInt(&k);//0 qDebug() << k;//false qDebug() << v4.toPoint(); qDebug() << endl; qDebug() << v5.isValid();//false, 因为v5里面没有装具体的类型数据,所以是无效的,以后使用前都应该判断一下 return a.exec(); }//打印结果 QVariant::int int 1 QVariant::double double 3 3.14 3.14 QVariant::QString QString 520 "520" QVariant::QPoint QPoint 0 false QPoint(15,15) false二、工程中的使用
1、工程中常用模型设计
(1) 、解析数据源中 的数据(数据库、网络、串口等)
(2)、将解析后的数据 存入QStandardItem对象中 (解析成可读的形式)
(3)、根据数据间的关系 在QStandardItemModel对象中组织数据项
(4)、选择合适的视图 显示数据值
2、工程中常用的模块设计
3、实例分析
(1)、在文件中以行的形式 存储了考试成绩信息(ID、Name、Score)
(2)、开发GUI程序 显示文件中的数据
A、计算平均成绩
B、 查找最好成绩和最坏成绩
C、可 刷新 显示的内容和删除的内容
4、系统架构图
(1)、 将读文件 这种底层操作封装在数据层完成
(2)、读后数据到了内存,然后 交于数据表示层来进行具体表示
(3)、数据表示层交于 数据组织层(相当于一个模型),数据组织层根据需要传给视图
(4)、显示数据
5、系统核心类图(每一次对应一个(或者一组)类)
6、系统实现
Next Lesson 三、小结
(1)、 QStandardItemModel 是一个通用的模型类
(2)、 QStandardItemModel 能够以任意的方式组织数据
(3)、使用 QVariant能够设计"返回值类型可变的函数"
(4)、工程中常用数据应用架构为4层结构: 数据层、数据表示层、数据组织层、数据显示层
【领QT开发教程 学习资料,点击下方链接莬费领取↓↓ ,先码住不迷路~】
「链接」
环球热点2023,全球气候治理重在行动来源人民日报海外版2022年6月20日,一名男子推车在孟加拉国锡尔赫特被洪水淹没的街道上跋涉。新华社美联世界气象组织近日发布公报说,受不断上升的温室气体浓度和累积热量的推动,过去8
我与黄山日报征文照亮一路前行的星星编者按岁月不居,时节如流。伴随着新时代中国特色社会主义的历史车轮滚滚向前,今年5月,由改革开放总设计师邓小平同志亲笔题写报名的黄山日报将迎来创刊70周年。这一刻,我们感慨万千,既有
单亲妈咪魅力提升必修,如何利用兴趣爱好散发魅力?在我接触到的大多数女性朋友中,当我问到她们平时有什么沉迷的爱好时,几乎80的人都会跟我说,也不知道喜欢什么,对很多事情都没啥兴趣。她们来自各行各业,甚至是不同的城市。当爱情受到挫折
关于胡鑫宇事件对父母教育的启发是的,胡鑫宇人生已经画上了句号!路是自己选的或者说是被迫选择的!充满了无奈与惋惜!我想他也是所有的努力在不被认可和自卑中自我断送青春年华的!我也是2个孩子的父亲,都说孩子是一张白纸
暴雪战网国际服下载注册教程一战网国际服下载教程1打开3DM网游加速器,加速战网国际服,下载战网国际服客户端(请玩家自行选择区服注册暴雪国际服账号)httpswww。blizzard。comzhtwappsb
电影满江红的伪命题张艺谋导演的满江红正在持续热映,观后感觉有几个问题。最大的问题就是这部电影的故事主题有偏差,那么多人前赴后继,不惜性命,不是为了杀秦桧为岳飞为国家报仇,却是为了让秦桧背出岳飞的遗作
iEnglish机构怎么样?能让孩子感受到英语学习的魅力?来自天猫和京东等平台的数据显示,今年的市场在发生新的变化。大米谷物油肉蛋和蔬菜不再需要储备。一小时内可以用手机订购。越来越多的文化创造力智力伴侣智力教育等类别开始进入年度消费品清单
你看看别人家的孩子本期内容提要求助一家长口头禅你看看别人家的孩子求助二父母只爱妹妹,不爱我求助三我还能和妈妈好好相处吗家长口头禅你看看别人家的孩子楠楠知心姐姐,为什么家长总是拿成绩来衡量我们,和他们
教育里父母不该偷懒,孩子也不能放养,20条育儿家规值得一看我的生活也是头条文兰妈谈育儿教育孩子,不发怒不代表没有威严,发怒和威严也是两码事,有威严才具备管教孩子的能力如果把孩子比作空中飞翔的风筝,那父母的威严就是风筝线盘,离开这个就会失去
为什么要生孩子?我被这段话治愈了1。hr泰戈尔在孩童之道中写道只要孩子愿意,他此刻便可飞上天去。他之所以放弃了他的自由,并不是没有缘故。他知道有无穷的快乐藏在妈妈内心的小小一隅里,被妈妈亲爱的手臂所拥抱,其甜美远
地铁跑酷通用兑换码2023年2月2日,地铁跑酷通用兑换码关注小编,领取每日地铁跑酷通用兑换码!福利兑换码FANBOOK地铁八十万人福利(复制即可)有效期至2020110000000兑换码内容金币99