Ⅰ.2.6.3.6 如何测试 QTreeViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items

原创 2015年11月18日 11:00:49

tree views使用一个tree结构的model,因此遍历所有model的items的最容易的方法是使用一个递归程序,就像我们队tree widgets操作的那样,下面是例子:

Example 6.12 The tst_treeview Test Script

def checkAnItem(indent, index, treeView, model, selectionModel):
    if indent>-1 and index.isValid():
        text = model.data(index).toString()
        checked = selected = ""
        checkState = model.data(index, Qt.CheckStateRole).toInt()
        if checkState = Qt.Checked:
            checked = " +checked"
        if selectionModel.isSelected(index):
            selected = " +selected"
        test.log("|%s'%s'%s%s" %(" "*indent,text, checked, selected))
    else:
        indent = -4
    #Only show visible child items
    if(index.isValid() and treeView.isExpanded(index) or
    not index.isValid()):
    for row in range(model.rowCount(index)):
        checkAnItem(indent+4, model.index(row,0,index), treeView, model, selectionModel)

def main():
    startApplication("itemviews")
    treeViewName = "{type=‘QTreeView’ unnamed='1' visible='1'}"
    treeView = treeView.model()
    selectionModel = treeView.selectionModel()<pre name="code" class="python">    checkAnItem(-1, QModelIndex(), treeView, model, selectionModel)


代码在结构上和 遍历tree widget的几乎一致,我们只在这里使用model indexes来识别items。在一个model中,有效的model index 代表“invisible root item”,就是说,创建一个model index不需要任何参数。(main函数中的最后一句展示了如何常见一个有效的model index。)通过使用递归程序来确定我们可以遍历整个tree,不管tree有多深。

正如我们在QTreeWidget例子中操作的,对于QTreeView我们跳过已经折叠起来的子items(不可见items)。我们可以很容易的跳过这些items,只需要移除 checkAnItem 函数中最后一个if语句即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Ⅰ.2.6.3.2 如何测试 QListViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items

view 类本身不保存任何数据,相反的它们可以显示model中数据。因此如果我们想要访问与一个view相关的所有items,我们必须首先获取该view的model,然后遍历model中的items。而...
  • dzh0622
  • dzh0622
  • 2015年11月17日 16:09
  • 425

Ⅰ.2.6.3.4 如何测试 QTableViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items

Table views,像其他的view 类一样,展示model中数据而不是自己保存数据。因此执行测试table展示的数据的关键是获取table view的model,对model的数据进行操作。下面...
  • dzh0622
  • dzh0622
  • 2015年11月17日 17:58
  • 292

Ⅰ.2.6.3.3 如何测试 QTableWidgets 中的 Items

在这个部分我们将看一看两个例子。第一个例子展示了如何设置table的rows 和 columns的数字;以及如何使用items填充table——包括使items变成可点击的和可选的;以及如何隐藏row...
  • dzh0622
  • dzh0622
  • 2015年11月17日 16:56
  • 256

Ⅰ.2.6.3.1 如何测试 QListWIdgets 中的 Items

遍历list widgets中的所有items是很容易的,本文介绍如何获取它们的texts以及检查它们的checked和selected状态。 Example 6.6 The tst_listwidg...
  • dzh0622
  • dzh0622
  • 2015年11月17日 15:57
  • 377

Ⅰ.2.6.3.5 如何测试 QTreeWidgets 中的 Items

tree widgets (tree views中显示的models)比list和table widgets难测试一些。这事因为trees有一个比较复杂的基础结构。这个结构本质上是这样的:一系列的行(...
  • dzh0622
  • dzh0622
  • 2015年11月18日 09:33
  • 241

python中的items方法

python中的items方法 items方法是将字典中所有的项以列表的形式返回,列表中的每一项都是以键值对的形式表现的。但其返回的次序可能不一样。d={'title':'python we...
  • u011271476
  • u011271476
  • 2016年07月10日 10:07
  • 765

ExtJs 入门教程十七[项目 :items]

一、语法items:[{ layout:'column',//布局值为:column、form autoHeight:true, xtype:'fieldset',//见说明[1] style...
  • u013037661
  • u013037661
  • 2015年07月02日 10:05
  • 885

动态改变panel 中items内容

JavaScriptEXT 动态改变panel 中items内容 悬赏:10 发布时间:2011-08-09 提问人:xwf2010_good (初级程序员)  > 猎头职位...
  • junmoxie
  • junmoxie
  • 2012年05月24日 21:57
  • 1810

extjs常用的items

1、改为密码框:     {        fieldlable:'密码',        xtype:'textfield',        inputType:'password'   ...
  • u011493599
  • u011493599
  • 2015年05月06日 15:25
  • 462

Python items函数 基础知识篇

items函数可以历遍出dict内的key和value,并以一对为元组的形式,组成一个list,具体例子如下 注意点:输出的结果,是以key对应value包含在一个元组,以元组为元素的一个list...
  • bestallen
  • bestallen
  • 2016年06月26日 12:24
  • 509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ⅰ.2.6.3.6 如何测试 QTreeViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items
举报原因:
原因补充:

(最多只允许输入30个字)