Я пытаюсь реализовать структуру учетной записи (с субсчетами) в PyQt4, используя QTreeView и QStandardItemModel. После большого количества проб и ошибок я, наконец, готов к просмотру дерева. Теперь я хочу, чтобы что-то произошло, когда я нажимаю на определенную строку в древовидном представлении. Мой опыт из инструментария GTK предполагает, что я бы прослушал какой-то сигнал, издаваемый при щелчке строки, а затем записывал обработчик сигнала, чтобы узнать, какая строка была нажата. Я не могу понять, как это сделать в PyQt. Какие-либо предложения?Выбранная строка в QTreeView/QStandardItemModel
1
A
ответ
2
В классе QtGui.QTreeView
есть сигнал void clicked (const QModelIndex&)
& void pressed (const QModelIndex&)
доступен для использования. Эта сигнальная функция находится в QtGui.QAbstractItemView
Унаследовано QtGui.QTreeView
.
Данные этого сигнала относятся к классу QtCore.QModelIndex
, поэтому этот класс имеет QAbstractItemModel QModelIndex.model (self)
может получить ваши данные модели QtGui.QStandardItemModel
.
Пример;
import sys
from PyQt4 import QtGui
class QCustomTreeView (QtGui.QTreeView):
def __init__ (self, parentQWidget = None):
super(QCustomTreeView, self).__init__(parentQWidget)
self.pressed.connect(self.myPressedEvent)
def myPressedEvent (self, currentQModelIndex):
# Use QModelIndex to show current data pressed
print currentQModelIndex.column(), currentQModelIndex.row()
print currentQModelIndex.data().toString()
# Also can implement your QStandardItemModel here
currentQStandardItemModel = currentQModelIndex.model()
myQApplication = QtGui.QApplication([])
myQTreeView = QCustomTreeView()
headerQStandardItemModel = QtGui.QStandardItemModel()
headerQStandardItemModel.setHorizontalHeaderLabels([''] * 4)
myQTreeView.setModel(headerQStandardItemModel)
# Append data row 1
row1QStandardItem = QtGui.QStandardItem('ROW 1')
row1QStandardItem.appendRow([QtGui.QStandardItem(''), QtGui.QStandardItem('1'), QtGui.QStandardItem('3'), QtGui.QStandardItem('5')])
headerQStandardItemModel.appendRow(row1QStandardItem)
# Append data row 2
row2QStandardItem = QtGui.QStandardItem('ROW 2')
row2QStandardItem.appendRow([QtGui.QStandardItem(''), QtGui.QStandardItem('2'), QtGui.QStandardItem('4'), QtGui.QStandardItem('6')])
headerQStandardItemModel.appendRow(row2QStandardItem)
myQTreeView.show()
sys.exit(myQApplication.exec_())
Смежные вопросы
- 1. UITableview Выбранная строка Скриншот
- 2. Выбранная строка Не удаляет
- 3. C# Datagridview выбранная строка
- 4. Android: FadeIn Выбранная строка
- 5. jQuery Таблица выбранная строка
- 6. Последняя выбранная строка в UITableView
- 7. ASP.NET GridView focus выбранная строка
- 8. Gridview Выбранная строка возвращения нулевой
- 9. Прямоугольник выбранная строка id == null
- 10. PyGtk - TreeView и выбранная строка
- 11. Выбранная строка Datagrid сумма ячейки
- 12. Datagrid выбранная строка в определенном столбце as3
- 13. Выбранная строка не обновляется в DataGridView
- 14. Выбранная строка не выбрана в datalist JSF
- 15. objectAtIndex не проходит выбранная строка в segue
- 16. WPF DataGrid выбранная строка, помещенная в список
- 17. Выбранная строка в списке отображает выбранный индекс
- 18. Выбранная строка в JTable вместе с сортировкой
- 19. jqGrid inline delete: выбранная строка «selrow» неверна
- 20. Привязка к набору данных Выбранная строка
- 21. Выбранная строка застревает после команды EntireRow.insert VBA
- 22. читать QTableview выбранная строка База данных QSQLITE
- 23. Как проверить, есть ли выбранная строка -Jqgrid
- 24. Set DetailsView как выбранная строка GridView
- 25. Прямолинейность datatable выбранная строка всегда одинаковое значение
- 26. р: DataTable Выбранная строка всегда нуль
- 27. Delphi TDBGrid выбранная строка get value
- 28. Выбранная строка не изменяется после сортировки GridView
- 29. C# - выделение WPF Выбранная строка Datagrid
- 30. Infragistics UltraWebGrid - выбранная строка изменяется случайным образом
Покажите нам, какой код у вас есть, пожалуйста. – W1ll1amvl