qml id转字符串_Qml组件化编程9-Model和View

本文是Qml组件化编程系列的第九篇,介绍QtQuick中的Model-View架构,包括ListView、ListModel、XmlListModel、ObjectModel等,强调数据、界面和逻辑的分离。文中通过实例讲解如何使用整数作为model创建组件,以及Delegate的用法,对比View与Repeater的区别,并探讨了ListView在搜索、排序、选中和拖拽等方面的功能扩展。
摘要由CSDN通过智能技术生成

简介

本文是《Qml组件化编程》系列文章的第九篇,涛哥将教大家,Qml中Model和View的知识。

注:文章主要发布在涛哥的博客 和 知乎专栏-涛哥的Qt进阶之路

目录

(放个目录方便大家预览文章。破乎不支持目录,这是从博客复制过来的,点击会跳转到博客)

  • 简介
  • 界面、数据和逻辑分离
  • Qt内置的Model-View
  • 整数做model
    • 关于delegate
    • View与Repeater的区别
  • ListModel
    • 静态ListModel
    • 动态ListModel
  • XmlListModel
  • ObjectModel
  • C++导出Model
    • QList<T>
    • QJsonArray
    • QQmlPropertyMap
  • ListView缺失的灵魂
    • 搜索与排序
    • 选中
    • 拖拽
    • 特效

界面、数据和逻辑分离

界面架构的理念发展的非常快,主要在Web技术的驱动下,就有这么多架构:

MVC、MVP、 MVVM、 Flux、Redux。

架构太多太复杂,只要抓住一些关键点就够了:界面、数据和逻辑要分别处理,最终要能够正确处理用户输入并显示结果。
来看一下Qt中提供的架构:

7a3b9617e7f18398469d40e636d596fe.png

Model代表数据,View代表界面,这个Delegate嘛,就是用来定制View的显示方式和Controll的调用,也应该算进View里面去。

这样看来Qt是M-V架构 ? 其实Qt算是MVC架构,这个Controll一般是自己实现的,和Model放在一起的。

不过Qt有信号/槽机制,在QtQuick中以属性绑定的方式出现。信号/槽相当于Gof设计模式中的观察者模式,也相当于Flux中的订阅/发布模式。

涛哥按自己的实践和理解,画了一个Qt的Model-View架构草图:

742d0964761e549bbcba09c5e0a5cfc5.png

Qt内置的Model-View

View包括 ListView、TableView、TreeView这三种

(ComboBox也可以算作ListView)

2f79515d1f8eb77d994c1731052729e6.png

对应的Model包括 ListModel、TableModel、TreeModel

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值