Форум сайта python.su
Есть модель QsqlTableModel.
Отображается через QTableView.
Понадобилось сделать диалог для редактирования, добавления записей.
Именно диалог не через QTableView,сначала кодил его в ручную(Четко заданы названия полей, и интупы для них).
Потом я понял что это долго, мучительно и не правильно.
Написал такой класс:
class BaseRecordDialog(QDialog): """docstring for Add""" def __init__(self): super(QDialog, self).__init__() self._model = None self.test_btn = QPushButton("Save") self.test_btn.clicked.connect(self.saveModel) self.layout = QVBoxLayout(self) self.record_layout = QFormLayout() self.layout.addLayout(self.record_layout) self.layout.addWidget(self.test_btn) self.inputs = {} def setModel(self, model): #Метод принимает как арг. модель и на ее основе строит форму. self._model = model self.inputs = {} for x in xrange(0, model.columnCount()): header_text = model.headerData(x, Qt.Horizontal).toString() self.inputs[x] = QLineEdit() self.record_layout.addRow(header_text, self.inputs[x])
Офлайн