【发布时间】:2011-11-19 16:41:23
【问题描述】:
有没有办法获取和更改 QTreeView(不是 QTreeWidget)中的活动行?激活是指具有焦点突出显示的行,而不是选定的行。在绘画活动中,我可以使用QStyle.State_HasFocus 来获取活动行,但这似乎在其他地方不起作用。
【问题讨论】:
标签: python qt pyqt qtreeview qabstractitemmodel
有没有办法获取和更改 QTreeView(不是 QTreeWidget)中的活动行?激活是指具有焦点突出显示的行,而不是选定的行。在绘画活动中,我可以使用QStyle.State_HasFocus 来获取活动行,但这似乎在其他地方不起作用。
【问题讨论】:
标签: python qt pyqt qtreeview qabstractitemmodel
您可以使用currentIndex() 和setCurrentIndex() 函数获取/设置活动行,这些函数可以在QTreeView 和QItemSelectionModel 中找到(后者由QTreeView.selectionModel() 返回)。
尽管有它的名字,QItemSelectionModel 却独立处理视图当前项和视图选择。
【讨论】:
当前项目是由焦点矩形指示的项目。您可以使用树视图的selectionModel 功能对其进行更改。如果您不想更改当前选定的项目,请将 QtGui.QItemSelectionModel.NoUpdate 作为第二个参数传递给 setCurrentIndex 方法。下面是一个例子:
index = model.index(3, 0);
view.selectionModel().setCurrentIndex(index, QtGui.QItemSelectionModel.NoUpdate)
这应该将当前项目移动到索引为 3 的项目
希望这有帮助,问候
【讨论】:
对我来说,问这样的问题并没有什么新鲜事,为什么,因为简单;您可以使用 Qt-Designer 并创建 QTreeView 然后创建行编辑,然后使用动作编辑器链接它们,然后将 UI 文件转换为 Py 文件,然后您将看到幕后的工作原理。
如果您尝试,您会发现:
QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)
【讨论】: