获取和设置在QTreeView则编程活动行(PyQt的)

问题描述 投票:4回答:3

是否有一种方式来获得和更改当前行中的QTreeView则(不QTreeWidget)?通过积极的,我指的是重点亮点,而不是选定行的行。 Paint事件,我可以用QStyle.State_HasFocus获得活动行,但是这似乎并没有在其他地方工作。

python qt pyqt qtreeview qabstractitemmodel
3个回答
4
投票

你可以得到/与currentIndex()setCurrentIndex()功能,你可以在这两个QTreeViewQItemSelectionModel找到设置活动行(后者由QTreeView.selectionModel()返回)。

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


1
投票

当前项是由焦点矩形所指示的一个。您可以使用selectionModel树视图的功能改变。如果你不希望改变当前选择的项目,通过QtGui.QItemSelectionModel.NoUpdate为setCurrentIndex方法的第二个参数。下面是一个例子:

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

这应该目前的项目移动到该项目上,指数3

希望这有助于问候


0
投票

对于我来说,没有什么新在这里要问这样的问题,为什么?因为简单;您可以使用Qt的设计师和创造QTreeView,然后创建行编辑,然后使用动作编辑器将它们链接,那么UI文件转换成PY文件,然后你会看到事情的幕后是如何工作的。 如果你尝试,你会发现这一点:

QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)
© www.soinside.com 2019 - 2024. All rights reserved.