Ⅰ.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.4 如何测试 Table Widgets,以及使用外部数据文件(Qt 4)

这个部分,我们将了解如何测试 csvtable 程序。这个程序使用了 QTableWidget 来展现一个 .csv(以逗号间隔开值)文件的内容,它提供了基本的处理数据的功能——插入行、删除行、编辑格...
  • dzh0622
  • dzh0622
  • 2015年11月18日 13:58
  • 305

Ⅰ.2.6.7 如何测试QListView (Qt 3)

这个部分介绍了如何验证一个Qt 3 list view widget(事实上是个tree widget)包含了我们所期望的items。 一种方法是遍历list view中的所有items,检查它们的每...
  • dzh0622
  • dzh0622
  • 2015年11月19日 09:41
  • 245

Ⅰ.16 如何编辑和调试测试脚本

除了记录和编辑测试脚本的工具,Squish也为调试测试脚本和检查AUT内部对象提供了支持。调试器不仅用于查找和修复测试脚本中的bug,而且还有助于检查一个运行中的AUT时使用断点功能。 Ⅰ.16.1...
  • dzh0622
  • dzh0622
  • 2015年11月25日 11:18
  • 352

Ⅰ.19 如何实现自动化批量测试

这个部分将会阐释设置自动化测试运行的必要步骤,以及如何处理结果。 由创建一个处理Squish的测试结果的脚本开始(以XML格式输出),这个结果产生一个HTML文件,它包含的结果可以用web浏览区打开...
  • dzh0622
  • dzh0622
  • 2015年12月15日 13:35
  • 660

第Ⅰ部分 敏捷开发 第4章 测试

烈火验真金,逆境磨意志——卢修斯?塞尼加 编写单元测试是一种验证行为,更是设计行为,更是编写文档行为。避免了反馈循环。 ★4.1测试驱动的开发方法 设计程序先编写测试方案,单元测试是检验程序功能...
  • wzhwho
  • wzhwho
  • 2011年10月23日 17:45
  • 527

Ⅰ.2.9.如何测试支持国际化的Qt AUT

Qt 支持创建国际化的应用程序。意思就是,举个例子,开发者可以创建一个Qt应用程序,在使用英语语言的地方(如U.S)该程序可以在menu选项和对话框标签上展示English文本,在用德语的地方显示Ge...
  • dzh0622
  • dzh0622
  • 2015年11月20日 10:17
  • 366

Ⅰ.7 如何从一个测试脚本中测试多个AUT,使用ApplicationContext

通常,为每个测试套件指定单个被测试的应用程序。然后通过每个测试案例执行和访问这个AUT。所有的教程展示了单个测试套件方法或单个AUT方法,但是事实上,有可能开始多应用程序以及访问,以及在单个测试套件内...
  • dzh0622
  • dzh0622
  • 2015年11月21日 22:23
  • 501

OCJP-TestReal[1]讲解.310-065.244.Items

  • 2013年12月25日 14:44
  • 4.61MB
  • 下载

如何自定义kindeditor编辑器的工具栏items即去除不必要的工具栏或者保留部分工具栏

kindeditor编辑器的工具栏主要是指编辑器输入框上方的那些可以操作的菜单,默认情况下编辑器是给予了所有的工具栏。针对不同的用户,不同的项目,不同的环境,可能就需要保留部分工具栏。那么我们应该如何...
  • nohaoye
  • nohaoye
  • 2015年07月27日 19:50
  • 779
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ⅰ.2.6.3.6 如何测试 QTreeViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items
举报原因:
原因补充:

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