QT 模型/视图 编程 使用篇

使用模型和视图

  下面的章节解释了如何在Qt中使用模型/视图模式。每个章节都包括一个例子,然后是如何创建新组件的章节。

Qt中包含两个模型

  Qt提供的两个标准模型是QStandardItemModel和QFileSystemModel。QStandardItemModel是一个多用途的模型,可用于表示列表、表和树视图所需的各种不同的数据结构。此模型还包含数据项。QFileSystemModel是一个维护目录内容信息的模型。因此,它本身不包含任何数据项,而只是表示本地归档系统上的文件和目录。

  QFileSystemModel提供了一个可以试验的现成模型,并且可以轻松地配置为使用现有数据。使用这个模型,我们可以展示如何建立一个模型来使用现成的视图,并探索如何使用模型索引来操作数据。

在一个已存在的模型上使用视图

  QListView和QTreeView类是与QFileSystemModel一起使用的最合适的视图。下面的示例在树视图中显示目录的内容,旁边是列表视图中的相同信息。视图共享用户的选择,以便在两个视图中都突出显示选中的项目。

 

 

 我们设置了QFileSystemModel以便可以使用,并创建一些视图来显示目录的内容。这展示了使用模型的最简单方法。模型的构建和使用是在一个main()函数中完成的:

 

 

该模型的建立是为了使用来自某个文件系统的数据。对setRootPath()的调用告诉模型文件系统上的哪个驱动器将公开给视图。

我们创建了两个视图,这样我们可以用两种不同的方式检查模型中的项目:

 

 

视图以与其他小部件相同的方式构造。设置一个视图来显示模型中的项目,只需使用目录模型作为参数调用它的setModel()函数。我们通过在每个视图上调用setRootIndex()函数来过滤模型提供的数据,为当前目录从文件系统模型中传递合适的模型索引。

本例中使用的index()函数是QFileSystemModel所特有的;我们为它提供一个目录,它返回一个模型索引。模型类中讨论模型索引。

该函数的其余部分只显示splitter小部件中的视图,并运行应用程序的事件循环:

 

 

在上面的例子中,我们忽略了如何处理项目的选择。关于处理项视图中的选择的部分将更详细地讨论这个主题。

posted @ 2020-02-29 15:45  helloc14  阅读(197)  评论(0编辑  收藏  举报