Qt 进阶 03|Model/View 架构入门,QListView/QTableView/QTreeView 基础使用
·
一、Model/View 架构思想
Qt Model/View(模型 / 视图)是数据与界面分离的经典架构:
- Model 模型:负责存储、管理、提供原始数据,不关心如何展示;
- View 视图:负责界面渲染、交互,不管理原始数据;优势:一份数据可同时被多个视图展示,修改数据所有视图自动同步,解耦性极强。
二、三大基础视图控件
- QListView:列表视图,一维数据展示(文件列表、选项列表)
- QTableView:表格视图,二维表格数据(表格表单、数据报表)
- 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。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)