Я недавно начал переписывать приложение, и я пытаюсь перенести его в модель / представление, чтобы уменьшить количество клуджей, которые у меня есть.
До сих пор мне удавалось успешно сделать модель только для чтения.наследование от QAbstractTableModel
.Эта модель выглядит примерно так:
class MyModel(QtCore.QAbstractTableModel):
def __init__(self, data, parent=None):
super(MyModel, self).__init__(parent)
self.data = data
data
- это список, содержащий ряд объектов.Затем они доступны в методе data ():
def data(self, index, role):
# much stuff omitted for clarity
return QtCore.QVariant(self.data[index.column()].id)
Теперь это нормально, если я работаю с предопределенным элементом data
.Но на самом деле data
изменяется программно (расширяется при получении определенных сигналов).Как я могу держать модель в курсе этого, чтобы мой взгляд также мог реагировать на эти изменения?
Я читал о моделях чтения-записи, но они также позволяют пользователю редактировать и изменять вещи,в то время как, на мой взгляд, я хочу, чтобы все было недоступно для редактирования: короче говоря, модель нужно было бы менять только «за кулисами», и представление адаптировалось бы к этому.
Каков лучший подход приложения в этомдело?Реализовать модель чтения-записи с помощью setData () и т. Д., Или есть более простое решение?