以编程方式获取并设置QTreeview中的活动行(PyQt)

2024-05-19 05:06:40 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有方法获取和更改QTreeView(而不是QTreeWidget)中的活动行?我所说的active是指焦点突出显示的行,而不是所选行。在paint事件中,我可以使用QStyle.State_HasFocus来获取活动行,但这在其他地方似乎不起作用。


Tags: 方法地方事件焦点activestatepaintqtreewidget
3条回答

您可以使用currentIndex()setCurrentIndex()函数获取/设置活动行,这些函数可以在QTreeViewQItemSelectionModel中找到(后者由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的项

希望这有帮助,问候

相关问题 更多 >

    热门问题