Получить и установить активную строку в QTreeview программно (PyQt) - PullRequest
5 голосов
/ 18 сентября 2011

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

Ответы [ 3 ]

4 голосов
/ 18 сентября 2011

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

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

1 голос
/ 18 сентября 2011

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

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

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

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

0 голосов
/ 09 февраля 2019

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

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