Как можно сохранить QStandardItemModel? - PullRequest
0 голосов
/ 29 января 2019

У меня есть приложение с несколькими табличными представлениями, ссылающимися на многие 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)

Как можно эффективно управлять действиями чтения / записи для постоянного файла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...