5

有没有办法获取和更改 QTreeView(不是 QTreeWidget)中的活动行?所谓活动,是指具有焦点突出显示的行,而不是选定的行。在绘画事件中,我可以QStyle.State_HasFocus用来获取活动行,但这似乎不适用于其他地方。

4

3 回答 3

4

您可以使用在and中都可以找到的currentIndex()and函数来获取/设置活动行(后者由)返回。setCurrentIndex()QTreeViewQItemSelectionModelQTreeView.selectionModel()

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

于 2011-09-18T17:20:59.393 回答
1

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

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

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

希望这会有所帮助,问候

于 2011-09-18T18:09:18.580 回答
0

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

QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)
于 2019-02-09T18:49:46.253 回答