有没有办法获取和更改QTreeView(不是QTreeWidget)中的活动行?通过激活,我的意思是焦点突出显示的行,而不是选定的行。在paint事件中,我可以使用QStyle.State_HasFocus
来获取活动行,但这在其他地方似乎不起作用。
答案 0 :(得分:3)
您可以使用currentIndex()
和setCurrentIndex()
中的QTreeView
和QItemSelectionModel
函数来获取/设置活动行(后者由{{返回} 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)