一、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。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐