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

时间:2011-09-18 14:20:25

标签: python qt pyqt qtreeview qabstractitemmodel

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

3 个答案:

答案 0 :(得分:3)

您可以使用currentIndex()setCurrentIndex()中的QTreeViewQItemSelectionModel函数来获取/设置活动行(后者由{{返回} 1}})。

尽管有名称,但QTreeView.selectionModel()独立处理视图当前项和视图选择。

答案 1 :(得分:1)

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

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

这应该将当前项目移动到索引为3的项目

希望这有帮助,尊重

答案 2 :(得分:0)

对我来说,问这样的问题没有什么新鲜之处,为什么因为简单?您可以使用Qt-Designer并创建QTreeView,然后创建行编辑,然后使用动作编辑器将其链接,然后将UI文件转换为Py文件,然后您将看到事物在幕后的工作方式。
如果您尝试以下操作,将会发现此问题:

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