理解 QT 中的 Model/View 架构

详细讲解 QT 中 Model/View 架构的设计原理和使用方法。

本文摘要

详细讲解 QT 中 Model/View 架构的设计原理和使用方法。

QT 的 Model/View 架构将数据与展示分离,实现了强大而灵活的 UI 设计。

三个核心组件

  1. Model(模型) — 通过标准接口提供数据(QAbstractItemModel)
  2. View(视图) — 渲染模型中的数据(QListView、QTableView、QTreeView)
  3. Delegate(代理) — 处理单个项目的渲染和编辑

自定义模型示例


class TaskModel : public QAbstractTableModel {
    Q_OBJECT
public:
    int rowCount(const QModelIndex& parent = QModelIndex()) const override {
        return m_tasks.size();
    }

    int columnCount(const QModelIndex& parent = QModelIndex()) const override {
        return 3; // 名称、状态、优先级
    }

    QVariant data(const QModelIndex& index, int role) const override {
        if (role != Qt::DisplayRole) return {};
        const auto& task = m_tasks[index.row()];
        switch (index.column()) {
            case 0: return task.name;
            case 1: return task.status;
            case 2: return task.priority;
        }
        return {};
    }
};

使用自定义模型可以完全控制数据访问,并支持排序、过滤和延迟加载等功能。

0 0 投票数
文章评级
订阅评论
提醒
guest

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

0 评论
最多投票
最新 最旧
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x