Получить и установить активную строку в QTreeview программно (PyQt)

Есть ли способ получить и изменить активную строку в QTreeView (не QTreeWidget)? Под активным я подразумеваю строку с выделением фокуса, а не выбранную строку. В событии рисования я могу использовать QStyle.State_HasFocus для получения активной строки, но, похоже, это не работает в других местах.


person D K    schedule 18.09.2011    source источник


Ответы (3)


Вы можете получить/установить активную строку с помощью функций currentIndex() и setCurrentIndex(), которые вы можете найти как в QTreeView, так и в QItemSelectionModel (последняя возвращается функцией QTreeView.selectionModel()).

И, несмотря на свое название, QItemSelectionModel обрабатывает текущий элемент представления и выбор представления независимо друг от друга.

person alexisdm    schedule 18.09.2011

Текущим элементом является тот, который обозначен прямоугольником фокуса. Вы можете изменить его с помощью функции selectionModel древовидного представления. Если вы не хотите изменять выбранные в данный момент элементы, передайте QtGui.QItemSelectionModel.NoUpdate в качестве второго параметра в setCurrentIndex. Ниже приведен пример:

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

это должно переместить текущий элемент в элемент с индексом 3

надеюсь, это поможет, с уважением

person serge_gubenko    schedule 18.09.2011

Для меня здесь нет ничего нового, чтобы задать такой вопрос, почему, потому что просто; вы можете использовать Qt-Designer и создать QTreeView, а затем создать строку редактирования, затем связать их с помощью редактора действий, затем преобразовать файл пользовательского интерфейса в файл Py, тогда вы увидите, как все работает за сценой.
Вы найдете это если вы попытаетесь:

QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)
person Issam mhedhebi    schedule 09.02.2019