2024-05-19 05:06:40 发布
网友
是否有方法获取和更改QTreeView(而不是QTreeWidget)中的活动行?我所说的active是指焦点突出显示的行,而不是所选行。在paint事件中,我可以使用QStyle.State_HasFocus来获取活动行,但这在其他地方似乎不起作用。
QStyle.State_HasFocus
您可以使用currentIndex()和setCurrentIndex()函数获取/设置活动行,这些函数可以在QTreeView和QItemSelectionModel中找到(后者由QTreeView.selectionModel()返回)。
currentIndex()
setCurrentIndex()
QTreeView
QItemSelectionModel
QTreeView.selectionModel()
尽管有它的名字,QItemSelectionModel独立地处理视图当前项和视图选择。
对我来说,问这样的问题并不是什么新鲜事,原因很简单;你可以使用Qt设计器创建QTreeView,然后创建行编辑,然后使用操作编辑器链接它们,然后将UI文件转换为Py文件,然后你将看到场景背后的工作原理。 如果您尝试:
QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)
当前项是由焦点矩形指示的项。您可以使用树状图的selectionModel函数更改它。如果不想更改当前选定的项,请将QtGui.QItemSelectionModel.NoUpdate作为第二个参数传递给setCurrentIndex方法。下面是一个例子:
index = model.index(3, 0); view.selectionModel().setCurrentIndex(index, QtGui.QItemSelectionModel.NoUpdate)
这会将当前项移动到索引为3的项
希望这有帮助,问候
您可以使用
currentIndex()
和setCurrentIndex()
函数获取/设置活动行,这些函数可以在QTreeView
和QItemSelectionModel
中找到(后者由QTreeView.selectionModel()
返回)。尽管有它的名字,
QItemSelectionModel
独立地处理视图当前项和视图选择。对我来说,问这样的问题并不是什么新鲜事,原因很简单;你可以使用Qt设计器创建
QTreeView
,然后创建行编辑,然后使用操作编辑器链接它们,然后将UI文件转换为Py文件,然后你将看到场景背后的工作原理。如果您尝试:
当前项是由焦点矩形指示的项。您可以使用树状图的selectionModel函数更改它。如果不想更改当前选定的项,请将QtGui.QItemSelectionModel.NoUpdate作为第二个参数传递给setCurrentIndex方法。下面是一个例子:
这会将当前项移动到索引为3的项
希望这有帮助,问候
相关问题 更多 >
编程相关推荐