0

我正在尝试自动化基于 PyQt 的应用程序,该应用程序使用 Squish 在图标模式下使用 QListView 为了选择视图中的特定项目,我需要首先识别项目的文本。我正在使用下面的代码来做同样的事情

targetList = waitForObject("{name='someListView' type='QListView'}")

object.children(targetList)[11].model().data(object.children(targetList)[11]).toString()

这里 object.children(targetList)[11] 是 QModelIndex 类型

但是上面的代码总是返回一个空字符串。

有没有其他方法可以检索文本数据

4

2 回答 2

2

我宁愿QListView只使用 API。所以,在有效targetList对象的情况下,即它是由waitForObject函数找到的,我会写:

targetList = waitForObject("{name='someListView' type='QListView'}")

model = targetList.model()
col = targetList.modelColumn
idx = model.index(11, col)
itemString = idx.data().toString()
于 2018-02-01T10:34:25.353 回答
1

这是一个例子:

def main():
    # Use itemviews example included in Squish:
    startApplication("itemviews")

    # Configure QListView to use IconMode as
    # mentioned by original poster:
    obj = waitForObject("{occurrence='2' type='QListView' unnamed='1' visible='1'}")
    obj.setViewMode(QListView.IconMode)

    # Get desired item via object.children();
    # this yields a "wrapped" QModelIndex which
    # features a property "text" which contains
    # the desired text:
    it = object.children(obj)[4]

    test.log("item text: %s" % it.text)
于 2018-02-08T15:04:41.400 回答