Название: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: TaleFrance от Март 06, 2021, 20:35 Здравствуйте! Прошу помочь с программой. Необходимо добавить возможность сохранения и загрузки таблицы из файла.
Код: void MainWindow::on_Read_triggered() Перегрузка: Код: QDataStream& operator<<(QDataStream& stream, const MyCard& card) На выходе (при сохранении в файл) в файле myfile.txt вместо чисел какие-то непонятные символы. Что это такое и как исправить? Как в таком случае обратно загружать таблицу из файла? Понятия не имею что делать. Подкиньте пожалуйста идеи. Название: Re: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: demal от Март 06, 2021, 22:30 Самая просто идея это открыть кот эту книжку http://etextlib.ru/Book/Details/2905 и посмотреть пример.
На крайняк открыть http://qt-doc.ru/rabota-s-fajlami-direktoriyami-qt.html (http://qt-doc.ru/rabota-s-fajlami-direktoriyami-qt.html) А вообще ты пишешь бинарный файл, а смотришь его как текстовый. Поэтому получаешь аброкадабру. Для текста используй QTextStream, для двоичных файлов QDateStream и всё будет в порядке. Название: Re: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: TaleFrance от Март 07, 2021, 16:31 Получается, что данные лежат в QList и их надо вернуть в таблицу? Я получаю список для сериализации методом _card.card(). Т.е нужен обратный этому методу метод для заполнения таблицы из QList? Я только пока вообще не понимаю как такое реализовать. В примерах везде используется QTableWidget, а у меня QTableView.
Название: Re: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: demal от Март 07, 2021, 17:09 qtableView только отображает то, что находится у тебя в QList.
У qtableWidget данные хранятся в qtableWidgetItem. Тебе надо написать метод по заполнению qlist, а qtableView сам подтянет данные. Алгоритм заполнения должен быть: добавить в список новый элемент, прочитать данные из файла, добавить данные в элемент. Название: Re: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: TaleFrance от Март 07, 2021, 22:49 Спасибо, кстати, а так можно сделать?:
Код: QDataStream in(&file); Название: Re: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: demal от Март 07, 2021, 23:07 Я не знаю твою задачу. Но хранить таблицу в qlist не самая лучшая идея, т.к. придется в рукопашную проецировать линейный qlist на двухмерную qtableview. если у тебя таблица не из одного стобца, то проще использовать qtablewidget - пусть он сам всё делает через qtablewidgetitem или использовать БД(sqlite). функционал по отображению у qtableview и qtablewidget одинаковый.
Если у тебя одна колонка, то возможно нужно использовать qlistview или что-то другое. Название: Re: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: TaleFrance от Март 08, 2021, 08:50 Так по заданию нужно. Сказали работать с QList и QTableView. В этом то, видимо, и основная сложность лабы. Я чет хз только, как такое провернуть. Не понимаю, откуда подойти.
Название: Re: Файловый ВВОД-ВЫВОД. СОХРАНЕНИЕ и ЗАГРУЗКА таблицы из файла Отправлено: TaleFrance от Март 08, 2021, 12:37 Вот так вроде работает:
Код: QDataStream in(&file); Где : void Card::setCard(const QList<MyCard> &card) { _card = card; } |