zoukankan      html  css  js  c++  java
  • QT 模型/视图 编程 使用篇

    使用模型和视图

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

    Qt中包含两个模型

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    linux 上安装sqlplus
    如何使用 SVN 找到一段时间内提交的代码文件
    nginx 快速检查配置文件的方法
    nginx 报错 [emerg] 1164#1664: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
    nginx 负载均衡
    C#可扩展编程之MEF学习
    5天玩转C#并行和多线程编程
    C#综合揭秘——深入分析委托与事件
    解析C#中[],List,Array,ArrayList的区别及应用
    在easyui datagrid中formatter数据后使用linkbutton
  • 原文地址:https://www.cnblogs.com/helloc14/p/12383293.html
Copyright © 2011-2022 走看看