Здравствуйте! Прошу помочь с программой. Необходимо добавить возможность сохранения и загрузки таблицы из файла.
Перегрузка:
QDataStream& operator<<(QDataStream& stream, const MyCard& card)
{
stream << card._number << card._name << quint32(card._sum)
<< quint32(card._profit) << quint32(card._rate)<<quint32(card._balance);
return stream;
}
QDataStream& operator>>(QDataStream& stream, MyCard& card)
{
stream >> card._number >> card._name >> card._sum >> card._profit >> card._rate
>>card._balance;
// QString number;
// stream>>number;
return stream;
}
Заполнение исходной модели данными в конструкторе
Card::Card(QObject *parent) : QAbstractTableModel(parent)
{
int sum = 800;
int profit = 700;
int rate = 300;
int balance = sum + profit - rate;
MyCard z("8812913", "Person1", (qint32)sum, (qint32)profit, (qint32)rate, (qint32)balance);
_card<<z;
int sum1 = 500;
int profit1 = 600;
int rate1 = 300;
int balance1 = sum1 + profit1 - rate1;
MyCard z1("7812913", "Person2", sum1, profit1, rate1, balance1);
_card<<z1;
}
QList<MyCard> Card::card() const
{
return _card;
}
void MainWindow::on_Write_triggered() // Запись
{
QString file_name = QFileDialog::getSaveFileName(this, "Open a file", "C:/files/myfile.txt");
QFile file(file_name);
QList x = _card.card(); // Получаем данные
if (!file.open(QFile::WriteOnly))
{
QMessageBox:: warning(this, "title", "file not open");
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_1);
out << x; // Запись таблицы в файл
file.close();
}
void MainWindow::on_Read_triggered() // Чтение
{
QString file_name = QFileDialog::getOpenFileName(this, "Open a file", "C:/files/myfile.txt", tr("Text Files (*.txt);;C++ Files (*.cpp *.h)"));
QFile file(file_name);
if (!file.open(QFile::ReadOnly))
{
QMessageBox:: warning(this, "title", "file not open");
}
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_1);
QList<MyCard> card;
in >> card;
// КАК ЗАПОЛНИТЬ ТАБЛИЦУ ИЗ card?
if(!card.isEmpty())
{
QMessageBox:: warning(this, "title", "ne pustoy");
}
file.close();
}
Как реализовать подобное заполнение? Я не понимаю, что делать. Нужно использовать только QList и QTableView
Это я так в файл записал (Write)