news 2026/6/9 4:33:53

Qt 进阶 03|Model/View 架构入门,QListView/QTableView/QTreeView 基础使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt 进阶 03|Model/View 架构入门,QListView/QTableView/QTreeView 基础使用

一、Model/View 架构思想

Qt Model/View(模型 / 视图)是数据与界面分离的经典架构:

  • Model 模型:负责存储、管理、提供原始数据,不关心如何展示;
  • View 视图:负责界面渲染、交互,不管理原始数据;优势:一份数据可同时被多个视图展示,修改数据所有视图自动同步,解耦性极强。

二、三大基础视图控件

  1. QListView:列表视图,一维数据展示(文件列表、选项列表)
  2. QTableView:表格视图,二维表格数据(表格表单、数据报表)
  3. QTreeView:树形视图,层级结构数据(目录、菜单树、组织架构)

三、内置简易 Model:QStandardItemModel(快速上手,无需自定义)

Qt 提供通用标准模型,日常快速开发首选。

1. QListView 列表示例

cpp

运行

// 1. 创建标准模型 QStandardItemModel *listModel = new QStandardItemModel(this); // 2. 添加数据 listModel->appendRow(new QStandardItem("列表项 1")); listModel->appendRow(new QStandardItem("列表项 2")); listModel->appendRow(new QStandardItem("列表项 3")); // 3. 绑定视图 ui->listView->setModel(listModel);
2. QTableView 表格示例

cpp

运行

QStandardItemModel *tableModel = new QStandardItemModel(this); // 设置表头 tableModel->setHorizontalHeaderLabels({"姓名","年龄","性别"}); // 添加行数据 QList<QStandardItem*> row; row << new QStandardItem("张三") << new QStandardItem("22") << new QStandardItem("男"); tableModel->appendRow(row); ui->tableView->setModel(tableModel);
3. QTreeView 树形示例

cpp

运行

QStandardItemModel *treeModel = new QStandardItemModel(this); QStandardItem *root = treeModel->invisibleRootItem(); QStandardItem *node1 = new QStandardItem("一级节点"); node1->appendRow(new QStandardItem("二级子节点")); root->appendRow(node1); ui->treeView->setModel(treeModel);

四、常用基础配置

cpp

运行

ui->tableView->horizontalHeader()->setStretchLastSection(true); // 最后一列自适应 ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers); // 禁止编辑

小结

快速开发、简单数据展示用QStandardItemModel;大数据、自定义数据格式,需要继承抽象模型实现自定义 Model。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 4:33:01

Playnite:如何用一个软件管理你所有的PC游戏和模拟器游戏?

Playnite&#xff1a;如何用一个软件管理你所有的PC游戏和模拟器游戏&#xff1f; 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. …

作者头像 李华
网站建设 2026/6/9 4:32:20

多维聚合三阶段数据操作:聚合前清洗、聚合中控制、聚合后重塑

1. 项目概述&#xff1a;多维聚合中的数据操作&#xff0c;远不止GROUP BY那么简单“Part 20: Data Manipulation in Multi-Dimensional Aggregation”这个标题乍看像是一门数据库课程的第20讲&#xff0c;但如果你真在业务一线做过报表开发、BI建模或数据中台建设&#xff0c;…

作者头像 李华
网站建设 2026/6/9 4:32:10

云GPU选型实战指南:LLM微调的硬件-驱动-IO全栈决策模型

1. 项目概述&#xff1a;为什么这份云GPU清单不是“又一份排行榜”&#xff0c;而是实操前必须拆解的决策地图你正在为一个关键任务发愁&#xff1a;手头有个垂直领域的小型语料库&#xff08;比如医疗问诊记录、工业设备日志、本地化电商评论&#xff09;&#xff0c;想微调一…

作者头像 李华
网站建设 2026/6/9 4:31:59

数据科学编程能力四层定位:从SQL搬运工到MLOps守夜人

1. 这个问题背后&#xff0c;藏着数据科学新人最真实的焦虑 “How Much Programming do I need in Data Science?”——这句话我过去三年在招聘现场、技术分享会、甚至咖啡馆里听过不下两百遍。它从来不是一句轻飘飘的求知提问&#xff0c;而是一个刚从统计学课程结业的硕士生…

作者头像 李华
网站建设 2026/6/9 4:28:55

智能车C车模调参避坑指南:从阿克曼几何到差速代码实现的完整流程

智能车C车模调参避坑指南&#xff1a;从阿克曼几何到差速代码实现的完整流程在智能车竞赛中&#xff0c;C车模因其独特的阿克曼转向结构和后轮双电机驱动方式&#xff0c;成为许多参赛队伍的选择。然而&#xff0c;从理论公式到稳定可用的代码实现&#xff0c;中间往往隐藏着无…

作者头像 李华