Есть ли способ получить и изменить активную строку в QTreeView (не QTreeWidget)? Под активным я подразумеваю строку с выделением фокуса, а не выбранную строку. В событии рисования я могу использовать QStyle.State_HasFocus
для получения активной строки, но, похоже, это не работает в других местах.
Получить и установить активную строку в QTreeview программно (PyQt)
Ответы (3)
Вы можете получить/установить активную строку с помощью функций currentIndex()
и setCurrentIndex()
, которые вы можете найти как в QTreeView
, так и в QItemSelectionModel
(последняя возвращается функцией QTreeView.selectionModel()
).
И, несмотря на свое название, QItemSelectionModel
обрабатывает текущий элемент представления и выбор представления независимо друг от друга.
Текущим элементом является тот, который обозначен прямоугольником фокуса. Вы можете изменить его с помощью функции selectionModel древовидного представления. Если вы не хотите изменять выбранные в данный момент элементы, передайте QtGui.QItemSelectionModel.NoUpdate в качестве второго параметра в setCurrentIndex. Ниже приведен пример:
index = model.index(3, 0);
view.selectionModel().setCurrentIndex(index, QtGui.QItemSelectionModel.NoUpdate)
это должно переместить текущий элемент в элемент с индексом 3
надеюсь, это поможет, с уважением
Для меня здесь нет ничего нового, чтобы задать такой вопрос, почему, потому что просто; вы можете использовать Qt-Designer и создать QTreeView
, а затем создать строку редактирования, затем связать их с помощью редактора действий, затем преобразовать файл пользовательского интерфейса в файл Py, тогда вы увидите, как все работает за сценой.
Вы найдете это если вы попытаетесь:
QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)