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

原创 2015年11月19日 09:41:36

这个部分介绍了如何验证一个Qt 3 list view widget(事实上是个tree widget)包含了我们所期望的items。

一种方法是遍历list view中的所有items,检查它们的每个text。例如,如果我们有一个 list view,该list view应该有一个最高层的名字为“Apple”的item,它有两个子item,text分别为“Orange”和“Banana”,我们可以使用下面的代码进行验证:

    listview = waitForObject(":fruit_QListView")
    item = listview.firstChild()
    test.compare(item.text(0), "Apple")
    child = item.firstChild()
    test.compare(child.text(0), "Orange")
    sibling = item.nextSibling()
    test.compare(sibling.text(0), "Banana")
我们也可能想验证list view真的只包含一个最高层的item。可以通过尝试获取第一个item的兄妹成员来得到——返回空的话就是没有兄妹item——使用的是QListViewItem::nextSibling方法。示例:

    var item = item.nextSibling();
    test.verify(isNull(item));
我们通过QListViewItem::firstChild 和 QListViewItem::nextSibling 函数可以遍历Qt 3 list view的所有items(即tree中的所有items)。我们可以使用QListViewItem::text 函数验证任何一个item的text,将待检验的column的数字传给该函数(因为每个item有可能不止一个column)。
另一种获取item的方法是使用QListView::findItem 函数。当我们想从tree中一个特别的位置搜索而不是从头开始搜索,或者如果我们只想在一列中搜索,对于验证某个item是否出现了这个函数很有用。例如,要想知道是否有一个text是“Orange” 的item,它可能存在于任何一个item的第一列,代码如下:

    #TCL
    set item[invoke $listview findItem "Orange" 0]
    test compare [isNull $item] false
给出的QListView::findItem 函数的第二个参数指定了搜索哪一列。

一个list view也可以包含更多的复杂的item,例如QCheckListItem.如果“Orange” item是一个check list item,我们想验证它被checked了,写出的代码如下:

    item = listview.findItem("Orange", 0)
    checkItem = cast(item, QCheckListItem)
    if checkItem:
        test.compare(checkItem.state(), QCheckListItem.On)
    else:
        test.fail("the retrieved item is not a QCheckListItem")
QListView::findItem  函数返回一个QListViewItem 的引用,因此我们比较将这个item转成它实际的类型(即,转成QLsitViewItem的子类型),在这种情况下使用cast 函数输入QCheckListItem。如果转换成功返回一个请求类型的一个对象的引用;如果失败返回0(脚本语言中,在条件语句中是false)。如果转换成功,我们调用item 的 QCheckListItem::state 函数,看是否返回QCheckListItem::On ;如果返回了,那么该item被checked了并且验证通过。转换不成功,我们使用test.fail 函数强制测试失败。





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

Ⅰ.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
  • 658

Ⅰ.2.6.4 如何测试 Table Widgets,以及使用外部数据文件(Qt 4)

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

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

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

Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)

Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的...

Qt学习:项视图类之QStringListModel和QListView

QListView是不显示表头和表框的,如果要显示,可以使用QTreeView来     view的显示属性分为列表list显示和icon图标显示,使用     QListView::setV...
  • bcs_01
  • bcs_01
  • 2013年05月20日 18:19
  • 4347

Qt自动补全(QCompleter或QListView)

一、简介        QCompleter能实现QLineEdit根据输入自动补全的功能,根据单词列表提示完成单词输入,也可补全文件路径。类似于百度,输入关键字列出关联的匹配结果。 不过Q...
  • hzsjun
  • hzsjun
  • 2015年12月21日 12:39
  • 870

QT中QListView中放置自定义控件并添加滚动条

转载 http://zhouzhenren163.blog.163.com/blog/static/6549928120140605729334/  效果如下图所示: 代码如下...

Qt浅谈之自动补全(QCompleter或QListView)

一、简介        QCompleter能实现QLineEdit根据输入自动补全的功能,根据单词列表提示完成单词输入,也可补全文件路径。类似于百度,输入关键字列出关联的匹配结果。 不过QCo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ⅰ.2.6.7 如何测试QListView (Qt 3)
举报原因:
原因补充:

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