Qt之模型-视图编程(使用模型-视图框架)

简述

下面的内容介绍了如何在Qt中使用模型/视图框架。

Qt中包含的两个模型

Qt提供的两个标准模型是QStandardIteModelQFileSystemModel。QStandardItemModel是一个多功能模型,可用于表示列表,表格和树视图所需的各种不同数据结构。该模型还保存数据项。 QFileSystemModel是用于维护有关目录内容信息的模型。因此,它不会存储项目数据,只是简单地表示本地系统的文件和目录。

在现有的模型上使用视图

QListView和QTreeView是最适合与QFileSystemModel一起使用的视图。下面提供的示例在树形视图中显示目录的内容,并在列表视图中显示相同的信息。这些视图共享用户的选择。

我们设置了一个QFileSystemModel以便可以使用,并且创建了一些视图来显示目录的内容。这个例子展示了模型/视图架构的最简单使用方法。

      QApplication app(argc, argv);
      QSplitter *splitter = new QSplitter;

      QFileSystemModel *model = new QFileSystemModel;
      model->setRootPath(QDir::currentPath());

这个模型被建立以使用来自特定文件系统的数据。调用setRootPath()来选定一个目录节点作为根目录。

我们建立两个视图类,这样就能以两种不同的方法来检查模型中的项目。

      QTreeView *tree = new QTreeView(splitter);
      tree->setModel(model);
      tree->setRootIndex(model->index(QDir::currentPath()));

      QListView *list = new QListView(splitter);
      list->setModel(model);
      list->setRootIndex(model->index(QDir::currentPath()));

视图的构造方式和其它控件相同。建立视图以显示模型中的项目仅需使用目录模型作为参数来调用setModel()函数即可。我们通过在每个视图上调用setRootIndex()函数来过滤模型提供的数据,并从文件系统模型中为当前目录传递合适的模型索引。

函数的剩下部分是使用splitter控件来显示视图

      splitter->setWindowTitle("Two views onto the same file system model");
      splitter->show();

总结

上面通过一个最简单的例子展示了模型/视图框架的基本用法。其中没有涉及到代理,这是因为视图会在其内部提供一个默认代理。这应该算是模型/视图编程整个流程的最后一步,But,这是我们学习模型/视图编程的起点。后面还要学习如何设计模型、视图、代理。

引用

[1] Qt助手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值