Select pyqt QTreeView 中的行和列
Select row and column in pyqt QTreeView
我在 qtreeview 上有一个过滤器可以重新创建行和列。一旦过滤器被删除所有文本。即过滤器=“”。重新创建 qtreeview。我希望在基于用户筛选结果时的选择重新创建 qtreeview 时预选一行。
我知道我应该使用的方法是:
tree.setCurrentIndex(米)
我知道 m 应该是:
m = QtCore.QModelIndex()
但是,我似乎无法在 setCurrentIndex 满意的 QModelIndex 中设置行和列。
我通过文字知道选中的项目。计划在重新创建 qtreeview 时获取行索引。
qtreeview 的设置如下:
- 一个
- 0
- 1
- b
- 2
- 3
- c
- 4
- 5
列的工作方式与您预期的不同。
在您的示例中,您没有任何列,只有行。
要访问项目 a,您应该执行以下操作:
>>> # setting up the model
>>> tree = QtGui.QTreeView()
>>> model = QtGui.QStandardItemModel()
>>> tree.setModel(model)
>>> # accessing data
>>> # To get item "a"
>>> a = tree.model().index(0, 0)
>>> a
<PySide.QtCore.QModelIndex(0,0,0x5805c40,QStandardItemModel(0x5805b30) ) at 0x7f9a81720148>
>>>
>> # to get item "a, 0"
>>> a0 = a.child(0, 0)
>>> a0
<PySide.QtCore.QModelIndex(0,0,0x7f9a88013d30,QStandardItemModel(0x5805b30) ) at 0x7f9a81720348>
请记住,Qt 中的所有内容都遵循 parent/child 关系,包括 QTreeView。
如果你觉得这个模型相当慢,你可以考虑提供一些方法来帮助你(不要向 Qt 寻求帮助,因为 QProxyModel 已经 depricated 并且不应该被使用。
简而言之,项目 a 是 (0, 0) 处模型的 child。项目 b 位于 (1, 0)
,依此类推。项目 a 的 children 可以从 a 引用,使用 a.child(row, column)
。 Child 0 在 (0, 0)
和 child 1 在 (1, 0)
.
我在 qtreeview 上有一个过滤器可以重新创建行和列。一旦过滤器被删除所有文本。即过滤器=“”。重新创建 qtreeview。我希望在基于用户筛选结果时的选择重新创建 qtreeview 时预选一行。
我知道我应该使用的方法是: tree.setCurrentIndex(米)
我知道 m 应该是: m = QtCore.QModelIndex()
但是,我似乎无法在 setCurrentIndex 满意的 QModelIndex 中设置行和列。
我通过文字知道选中的项目。计划在重新创建 qtreeview 时获取行索引。
qtreeview 的设置如下:
- 一个
- 0
- 1
- b
- 2
- 3
- c
- 4
- 5
列的工作方式与您预期的不同。
在您的示例中,您没有任何列,只有行。
要访问项目 a,您应该执行以下操作:
>>> # setting up the model
>>> tree = QtGui.QTreeView()
>>> model = QtGui.QStandardItemModel()
>>> tree.setModel(model)
>>> # accessing data
>>> # To get item "a"
>>> a = tree.model().index(0, 0)
>>> a
<PySide.QtCore.QModelIndex(0,0,0x5805c40,QStandardItemModel(0x5805b30) ) at 0x7f9a81720148>
>>>
>> # to get item "a, 0"
>>> a0 = a.child(0, 0)
>>> a0
<PySide.QtCore.QModelIndex(0,0,0x7f9a88013d30,QStandardItemModel(0x5805b30) ) at 0x7f9a81720348>
请记住,Qt 中的所有内容都遵循 parent/child 关系,包括 QTreeView。 如果你觉得这个模型相当慢,你可以考虑提供一些方法来帮助你(不要向 Qt 寻求帮助,因为 QProxyModel 已经 depricated 并且不应该被使用。
简而言之,项目 a 是 (0, 0) 处模型的 child。项目 b 位于 (1, 0)
,依此类推。项目 a 的 children 可以从 a 引用,使用 a.child(row, column)
。 Child 0 在 (0, 0)
和 child 1 在 (1, 0)
.