tree widgets (tree views中显示的models)比list和table widgets难测试一些。这事因为trees有一个比较复杂的基础结构。这个结构本质上是这样的:一系列的行(顶层items),每行有一个或多个列,每列有自己的子items。每个子item有一个或多个列,并且有自己的子items,以此类推。
遍历tree的最简单的方法就是使用递归程序(即,调用自己的程序),从tree的可见的root item开始,然后访问每个item的子items,以及它们的子items,以此类推。下面有一个例子。(注意到当在一个测试中有定义多个函数时,Squish总是调用main函数,这个函数可以调用其他的函数。)
Example 6.11 The tst_treewidget Test Script
def checkAnItem(indent, item, root):
if indent > -1:
checkd = selected = ""
if item.checkState(0) == Qt.Checked:
checked = " +checked"
if item.isSelected():
selected = " +selected"
test.log("|%s'%s'%s%s" %(""*indent, item.text(0), checked, selected))
else:
in