Qt系列文章之 Qt Model Class

2023-10-27

Qt Model Class

Qt提供了一些列相互继承的Model类体系,Qt的Model类是对用户数据进行体系化封装并提供统一操作接口的一大类模块。
在这里插入图片描述

Qt提供的模型类十分多,大致可以分为三种:不可实例化的抽象基类、代理模型类和可实例化模型类。其中QStringListModel和QFileSystemModel是特定场景使用的高级封装模型。一般的模型分为如下三种,List模型,表格模型和树模型。这三种模型都可以基于抽象基类QAbstractItemModel进行继承来开发。当然不论是那种模型,都是基于基本的条目构造而成,也可以使用QStandardItemModel来封装数据。
在这里插入图片描述

如果需要使用开发列表类模型,可以使用QAbstractListModel来封装自己的数据;如果需要开发表格类模型,可以使用QAbstractTableModel来封装自己的模型。如果是树模型,那么可以使用QAbstractItemModel或者QStandardItemModel来封装自己的模型。

抽象基类模型QAbstractItemModel是所有模型类的基类,提供了大量的虚方法,用户在封装自己数据时需要对其进行实现,其中纯虚函数必须都要在子类中实现。
在这里插入图片描述
从表中可见,Qt的Model类中有一个十分重要的属性QModelIndex,用来定位Model中任意条目的位置、角色;是实现模型和视图及其他外部类之间进行交流的桥梁。在后期具体模型开发文章之中,我们将以实例的形式来具体介绍其用法。

下一篇文章将基于QAbstractItemModel来实现开发第一个用户模型,通过对QAbstractItemModel的掌握,其他模型将会十分容易理解。


欢迎同好沟通交流,批评指正,欢迎关注我的公号:不如起而行之

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt系列文章之 Qt Model Class 的相关文章

  • 通过单击内部小部件而不是标题栏来移动窗口

    在 Windows 中 当我创建 QMainWindow 时 我可以通过单击标题栏并拖动它来在屏幕上移动它 在我的应用程序中 我使用隐藏了标题栏setWindowFlags Qt CustomizeWindowHint 我正在尝试使用小部件
  • QAbstractItemModel 如何表示树?

    我仍然很难理解 QAbstractItemModel 对项目的表示 有两种返回 QModelIndex 项的方法对我来说没有任何意义 QModelIndex QAbstractItemModel index int row int colu
  • 使用 QGraphicsScene 和 QGraphicsView 在 Qt 中开始基于 Tile 的游戏

    我将开始在 Qt 中编写基于 2D 图块的游戏 并阅读 QGraphicsScene 和 QGraphicsView 类 这些类旨在显示和处理大量 2D 对象 我的问题是 使用 QGraphicsScene 创建一个包含大量图块的世界是否可
  • QT:模块“QtWebView”未安装

    我的操作系统是win10 QT版本是Qt5 7 mingw53 32 目标操作系统是win10 当我使用qmlscene执行qml文件时 发生了一些错误 qrc qml 3 模块 QtWebView 未安装 我的 qml 文件如下 impo
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • 相对文件路径的区别:Qt Creator的调试模式和发布模式

    QFile file test txt if file open QIODevice ReadOnly qDebug lt lt You got me 我在用 Qt 4 8 6 与 MSVC 2010 Qt 创建者 3 1 1 Window
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 如何安装 C++ 的 VOCE?

    我正在尝试安装 VOCE api 它是为 C 和 Java 构建的语音识别 API 这是我第二次使用外部 C 库 也是第一次使用 Java C api 语音链接 http voce sourceforge net http voce sou
  • 日历小部件的特定单元格如何着色?

    日历小部件的特定单元格如何着色 我认为你应该扩展 QCalendar 类并添加一些行为 我在这里找到了一些东西 http www qtforum org article 21614 paintcell and qcalendarwidget
  • 使用 qt 创建和使用共享库

    我对共享库很陌生 所以我对如何创建 使用共享库有疑问 我正在使用 Qt Creator 和 qt 5 4 2 以及 Microsoft Visual C 11 0 编译器 在我的项目中 我需要创建一个 dll 它从外部库调用函数 有 h l
  • 暂停 python 脚本直到事件发生,而不挂起/阻止 GUI

    尝试使用 Kivy 从 PyQt 迁移 我什至无法想象解决方案 我有数千行代码 使用 Qt 的对话框进行文本输入 也就是说 当到达他们的代码行时 他们会 停止 脚本 直到按下 确定 按钮 以便他们可以返回文本输入 Kivy 没有该功能 因此
  • 从 QWebEngineView 或 QWebEnginePage 中删除滚动条

    有没有办法删除滚动条QWebEngineView或者我可以以某种方式访问 它的 ScrollArea 吗 使用 webkit 就这么简单 WebView gt page gt setScrollBarPolicy Qt Vertical Q
  • QDateTime::fromstring( __DATE__, "MMM d yyyy") 返回无效

    解析MSVC 预定义 DATE 也许结合 TIME 宏与 QDateTime fromstring 不返回任何内容 无效的 QDateTime 对象 为什么 From http msdn microsoft com en us librar
  • 从 QTableView 读取和写入文件

    如何读取和写入输入 QTableView 的文本文件日期 这就是我所拥有的 但我想在将数据添加到表中时保存数据 当然能够在重新打开应用程序时读回它 有什么教程可以参考吗 MainWindow MainWindow QWidget paren
  • 如何防止 QTableView 项目在双击时被清除

    使用 QAbstractTableModel 将 QTableView 设置为可编辑flag method def flags self index return Qt ItemIsEnabled Qt ItemIsSelectable Q
  • Qt 中的智能指针[重复]

    这个问题在这里已经有答案了 就像已经写过一样here http blog qt digia com 2009 08 25 count with me how many smart pointer classes does qt have Q
  • Row 和 RowLayout 有什么区别?

    这按预期工作Row 但不与RowLayout 为什么 两者有什么区别 ApplicationWindow title Testing width 640 height 480 RowLayout Row anchors fill paren
  • QTreeView绘制下降指示器

    我需要在 QTreeView 中通过拖放实现行移动 并显示行之间的放置指示器 我想知道是否有一种方法可以覆盖指示器绘制 因此它仅针对行之间的所有层次结构级别显示 而不是项目周围的矩形 该线必须与整行一样宽 而不是与一列一样宽 可以通过修改用
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实

随机推荐

  • ajax怎么给日历日期上做标记,可以做标记的日历?

    原标题 可以做标记的日历 我们很多人一天要做的事情是比较多的 除了工作中的一些任务外 还要照顾好整个家庭 事情多了就难免会有疏忽 所以有不少网友都想要使用一款直观的添加日程的软件 如果可以直接在日历软件中添加日程做标记就更好了 那么有可以做
  • 剑指offer——对称的二叉树

    题目描述 请实现一个函数 用来判断一颗二叉树是不是对称的 注意 如果一个二叉树同此二叉树的镜像是同样的 定义其为对称的 本题知识点 树 解题思路 采用递归的方式 先判断左子树和右子树是否相等 再递归判断左子树的右子树和右子树的左子树以及左子
  • 【101】NLP 自然语言处理14种分类算法】

    内容目录 一 数据集介绍二 解压文件明确需求三 批量读取和合并文本数据集四 中文文本分词五 停止词使用六 编码器处理文本标签七 常规算法模型1 k近邻算法2 决策树3 多层感知器4 伯努力贝叶斯5 高斯贝叶斯6 多项式贝叶斯7 逻辑回归8
  • locust基础使用

    locust基础使用 前言 最近接到一个需求 压测一个接口稳定性 瞬间脑海浮现了jmeter 然后接着看了是那个接口 瞬间分析了下接口里身份验证的加密算法 加上由于时间有限加上jmeter的BeanShell PreProcessor不是很
  • KISS principle (kiss原则)

    Keep It Simple Stupid KISS 原则声明 即使解决方案看起来很愚蠢 简单的解决方案也比复杂的解决方案好 描述 该KISS原则是关于追求简单 现代编程语言 框架和API具有强大的手段来创建针对各种问题的复杂解决方案 有时
  • uniapp超实用页面三层架构(背景层+模糊层+内容层)

    更新 固定高度 滚动条 解决内容超出问题 内容不超出可以去掉
  • Python到底有多强?双十一的时候带你领略它的强大之处!

    双十一第一波付尾款已经开始啦 怎么样 不过很烦的事情就是 手速不够快 抢不过人家 总是错过优惠券 看到好东西 稍微犹豫了下 然后也没了 哭唧唧 成天忙得晕头转向 忘记付尾款 不仅东西没抢到 定金也没了 还有啊 双十一的优惠攻略真的是看得人头
  • 大文件切片上传、视频切片上传转m3u8播放

    一 故事 前不久干项目 涉及到在线学习 简单来说就是对文章 视频进行在线学习 这个时候问题出现了 就是在上传视频的时候 速度很是慢 除此之外 视频播放也是卡的鸭皮 然后就开始疯狂网上搜刮知识 最终解决方案如下 二 解决方案 1 视频采用切片
  • gtest各项参数

    1 测试部分 1 gtest list tests 列出所有测试的名字而不是运行它们 例如TEST fun add 输出就是fun add 2 gtest filter positive patterns 过滤作用 仅仅运行那些名字匹配po
  • docker安装RabbitMQ及安装延迟插件

    我这个安装攻略首先得保证服务器上安装过docker了 如果没安装docker请先去安装docker 1 首先说一下什么是MQ MQ message queue 字面意思上来说消息队列 FIFO先入先出 队列中存入的内容是message 是一
  • Docker 无法使用Vi/Vim/Gedit

    当在ubuntu下 使用docker container 时 想要编辑一些文件 但是docker登陆后 无法安装vim 无法使用apt get命令 所以可以考虑另一种方法 即在本地修改好文件 把文件拷贝覆盖到docker 使用以下命令 do
  • 记录第一篇被”华为开发者联盟鸿蒙专区 “收录的文章

    记录第一篇被 华为开发者联盟鸿蒙专区 社区收录的文章 坚持写作的动力是什么 是记录 分享 以及更好的思考
  • Qt自学笔记-自定义信号和槽(传智教育)

    一 新建项目 1 项目名称 02 SignalAndSlot 建立一个空窗口 基类 Qwidget 名称Widget 先运行一下第一个空窗口 检查一下代码 2 根据需求在项目上创建新文件 2 1 第一个文件 Teacher 不是一个控件 因
  • LeetCode(Python)——回文数(简单)

    回文数 概述 给你一个整数 x 如果 x 是一个回文整数 返回 true 否则 返回 false 回文数是指正序 从左向右 和倒序 从右向左 读都是一样的整数 输入 x 121 输出 true 输入 x 121 输出 false 输入 x
  • PAT 7 三羊献瑞(dfs)

    三羊献瑞 观察下面的加法算式 祥 瑞 生 辉 三 羊 献 瑞 三 羊 生 瑞 气 其中 相同的汉字代表相同的数字 不同的汉字代表不同的数字 请你填写 三羊献瑞 所代表的4位数字 答案唯一 不要填写任何多余内容 答案 9分 f1
  • SPSS实现Fleiss Kappa与分析(也可利用公式计算)

    1 简单介绍 机器学习中涉及新数据集发布的论文通常会描述数据集的构建过程 一份数据集往往由多位标注员共同完成 不同标注员对数据的理解很容易存在偏差 这极大程度上会影响数据集的一致性 从而限制算法的性能 因此在构建数据集的标注过程中 大多数构
  • 解决:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' execu

    在准备写个脚本去爬取网易云歌曲信息时 用selenium去戳 这里采用的是chrome浏览器 链接网页时报错 File C Python37 lib site packages selenium webdriver chrome webdr
  • python日志文件

    version 1 disable existing loggers False root level ERROR handlers console propagate False loggers infoFileLogger level
  • windows任务计划程序拒绝访问

    问题现象 在windows任务计划程序中添加脚本程序 执行相应脚本 报了拒绝访问和创建目录需要输入参数问题 问题分析 没有权限执行脚本 问题解决 除了填写相应位置的脚本之外 还需要填写起始于的脚本所在路径
  • Qt系列文章之 Qt Model Class

    Qt Model Class Qt提供了一些列相互继承的Model类体系 Qt的Model类是对用户数据进行体系化封装并提供统一操作接口的一大类模块 Qt提供的模型类十分多 大致可以分为三种 不可实例化的抽象基类 代理模型类和可实例化模型类