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



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

您可以使用currentIndex()setCurrentIndex()函数获取/设置活动行,这些函数可以在QTreeViewQItemSelectionModel中找到(后者由QTreeView.selectionModel()返回)。

尽管它的名字,QItemSelectionModel独立处理视图当前项和视图选择。

当前项为焦点矩形所指示的项。您可以使用树视图的selectionModel函数来更改它。如果不想更改当前选定的项,将QtGui.QItemSelectionModel.NoUpdate作为第二个参数传递给setCurrentIndex方法。下面是一个例子:

index = model.index(3, 0);
view.selectionModel().setCurrentIndex(index, QtGui.QItemSelectionModel.NoUpdate)

this应该将当前条目移动到索引为3的条目

希望这对你有帮助

对我来说,问这样的问题没什么新鲜的,为什么因为简单;您可以使用Qt-Designer并创建QTreeView,然后创建行编辑器,然后使用动作编辑器将它们链接起来,然后将UI文件转换为Py文件,然后您将看到幕后的工作原理。如果您尝试:

QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)

最新更新