如何知道QTreeView上一次选择的index
时间: 2023-05-21 11:03:00 浏览: 75
您可以使用 QTreeView 的 selectionModel() 方法获取其选择模型,然后使用 selectionChanged() 信号来跟踪选择更改。在 selectionChanged() 信号的槽函数中,您可以使用 QItemSelectionModel 的 selectedIndexes() 方法获取当前选择的所有索引,然后使用其中的第一个索引来确定上一次选择的索引。以下是示例代码:
```python
def on_selection_changed(self, selected, deselected):
indexes = self.treeView.selectionModel().selectedIndexes()
if indexes:
last_index = indexes[0]
# do something with last_index
```
请注意,此代码是使用 Python 和 PyQt 编写的。如果您使用的是 C++,则代码会略有不同。
相关问题
qtreeview 上的qicon的用法
在Qt中,QTreeView是一个常用的控件,用于显示树形结构的数据。而对于树形结构中的每一个节点,我们可以为其添加一个QIcon,从而给节点添加一些图标装饰,方便用户更好地识别并了解节点的属性。
使用QIcon创建一个图标非常简单,只需要调用QIcon类的构造函数,并传入合适的图标文件路径或者制作一个QPixmap,然后将其赋值给树形视图QTreeView的对应行的数据模型中,即可呈现在树形结构中。
当然,在实际的开发过程中,有时候我们需要在不同的节点上显示不同的图标,或者根据不同的数据动态地改变图标。这种情况下,我们可以在QTreeView中实现重写创建自己的数据模型或者委托,然后通过这些自定义的数据模型或者委托的回调函数来动态地设置QIcon。
总的来说,QIcon作为一个可重复使用的图标类,在QTreeView中有着广泛的应用。它使得树形结构能够更加鲜明且直观地展示出每一个节点,从而更好地提高了程序的可读性和可用性。
Qtreeview可以使用选择模型,点一下,选中上下九个
QTreeView 是可以使用选择模式的,可以通过设置 QTreeView 的 selectionMode 属性实现。而选择上下九个的功能,可以通过自定义 QItemSelectionModel 来实现。具体实现方法如下:
1. 继承 QItemSelectionModel 类,重写 select() 方法,在方法中实现选中上下九个的功能。
```python
class MySelectionModel(QtGui.QItemSelectionModel):
def select(self, selection, flags):
if flags & QtGui.QItemSelectionModel.Clear:
super(MySelectionModel, self).select(selection, flags)
else:
newSelection = QtGui.QItemSelection()
for index in selection.indexes():
for i in range(-4, 5):
if i != 0:
newIndex = self.model().index(index.row() + i, index.column())
if newIndex.isValid():
newSelection.select(newIndex, QtGui.QItemSelectionModel.Select)
super(MySelectionModel, self).select(newSelection, flags)
```
2. 在 QTreeView 中设置自定义选择模型。
```python
myModel = QtGui.QStandardItemModel()
myTreeView = QtGui.QTreeView()
mySelectionModel = MySelectionModel(myModel)
myTreeView.setSelectionModel(mySelectionModel)
```
这样,当用户点击 QTreeView 中的某个项时,就会选中该项上下九个。