У меня есть приложение с несколькими табличными представлениями, ссылающимися на многие QStandardItemModel, и мне нужно сохранить и загрузить эту информацию из файла.Я пытался протравить модели напрямую, но это невозможно.Как я могу сериализовать модели и получить к ним доступ в режиме чтения / записи?
Вот мой код, который я использую для хранения модели в виде файла Excel:
@pyqtSlot()
def export(self):
filename, _ = QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)")
wbk = xlwt.Workbook()
sheet = wbk.add_sheet("sheet", cell_overwrite_ok=True)
style = xlwt.XFStyle()
font = xlwt.Font()
font.bold = True
style.font = font
for c in range(self.QSModel.columnCount()):
text = self.QSModel.headerData(c, Qt.Horizontal)
sheet.write(0, c + 1, text, style=style)
for r in range(self.QSModel.rowCount()):
text = self.QSModel.headerData(r, Qt.Vertical)
sheet.write(r + 1, 0, text, style=style)
for c in range(self.QSModel.columnCount()):
for r in range(self.QSModel.rowCount()):
text = self.QSModel.data(self.QSModel.index(r, c))
sheet.write(r + 1, c + 1, text)
wbk.save(filename)
Вот код Iиспользовать для сериализации модели в файле:
@pyqtSlot()
def export2(self):
file_ = QtCore.QFile("file.dat")
file_.open(QtCore.QIODevice.WriteOnly)
# we will serialize the data into the file
out = QtCore.QDataStream(file_)
# serialize a string
out.writeQVariant(self.QSModel)
Как можно эффективно управлять действиями чтения / записи для постоянного файла?