应如何为委托编写测试以进行编辑?



>我有一个树视图,某些字段需要使用自定义委托进行编辑。 委托提供值选择QListView。 似乎应该使用QAbstractItemView.edit()方法来从测试中启动编辑,但我无法弄清楚如何访问创建的编辑器(QListView),以便我可以为测试选择合适的元素。

这是我在切换到QListVew之前与QComboBox代表合作的测试的一部分,但它似乎太手动了。

for index, enumerator in enumerate(group.children):
editor = delegate.createEditor(
parent=viewport,
option=None,
index=target_index,
)
editor.setCurrentIndex(index)
delegate.setModelData(editor, model, target_index)
assert enumerator.uuid == item.enumeration_uuid

https://github.com/altendky/st/commit/643c5c30f87fc3bfd8b422687e81f740ec36ef44#diff-06bc81dbbd9f7a12878169d5238e1572R846

这是我想到的。

https://github.com/altendky/st/blob/089432162b9e8ca67eafdfcc2a4ecc34e8f0e96e/epyqlib/tests/test_attrsmodel.py#L848

for row, enumerator in enumerate(group.children):
assert view.edit(
target_index,
PyQt5.QtWidgets.QAbstractItemView.AllEditTriggers,
None,
)
editor, = view.findChildren(PyQt5.QtWidgets.QListView)
index = editor.model().index(row, 0, editor.rootIndex())
editor.setCurrentIndex(index)
editor.clicked.emit(index)
# this is fun.  if you get weird issues try doing this more times
for _ in range(3):
application.processEvents()
assert enumerator.uuid == item.enumeration_uuid

请注意,我连接编辑器的点击信号来发布回车键事件,因为视图是硬编码的,可以捕获输入事件并完成编辑。

相关内容

  • 没有找到相关文章

最新更新