• QTableView. Файловый ВВОД-ВЫВОД. Как данные из QList вернуть в таблицу? Как ЗАПОЛНИТЬ таблицу из QLIST?

    @TaleFrance Автор вопроса
    Вот же:
    Card.h:

    class MyCard
    {
        public:
            MyCard() = default;
            MyCard(const QString &name,const  QString &author, int code, int subscription, int hall, int balance);
    
    
           friend int returnSum();
    
            QString getNumber() const;
           void setNumber(const QString name);
    
    
           QString getName() const;
           void setName(const QString author);
    
    
           int getSum() const;
           void setSum(int code);
           MyCard(int code);
    
            int getProfit() const ;
            void setProfit(int subscription);
    
    
    
             int getRate() const;
             void setRate(int hall);
    
             int getBalance() const;
             void setBalance(int balance);
    
    
          friend   QDataStream& operator<<(QDataStream&  stream, const MyCard& card);
    
          friend QDataStream& operator>>(QDataStream& stream, MyCard& card);
    
    
        //  friend   QTextStream& operator<<(QTextStream&  stream,  MyCard& card);
    
        //  friend QTextStream& operator>>(QTextStream& stream, MyCard& card);
    
    
    
    
    
        private:
    
            QString _number;
    
            QString _name;
    
            int _sum = 0;
            int _profit = 0;
    
            int _rate = 0;
    
            int _balance = 0;
    
    };
    
    
    
    class Card: public QAbstractTableModel
    {
    Q_OBJECT
    public:
        explicit Card(QObject* parent = nullptr);
    
    
    
        MyCard returnList();
        //explicit Card()
    
       // friend QDataStream&  operator<<(QDataStream&  stream, const MyCard& card);
    
    
        // friend QDataStream& operator>>(QDataStream& stream, Card& card);
    
        // QAbstractItemModel interface
    public:
    
    
    
    
        virtual int rowCount(const QModelIndex &parent) const override;
        virtual int columnCount(const QModelIndex &parent) const override;
        virtual QVariant data(const QModelIndex &index, int role) const override;
    
         void clearTable(MyCard card);
    
       //  void clearTable2(MyCard card);
    
    
        virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
        QList<MyCard> card() const;
        void setCard(const QList<MyCard> &card);
    
    
        //Card x(Card y);
    
    
        QVariant del(QModelIndex index, int role);
    
    
        void AddCard(const MyCard& card);   // Добавляем пустую строку
    
        //void AddCard2(MyCard& card);   // Добавляем пустую строку
        QVariant AddCard2(MyCard card);
    
         void AddNewCard(MyCard card);       // Добавляем нову строку с данными
    
    
        void Remove(int f);
    
       const MyCard GetCard();
    
    
      // friend QDataStream& operator<<(QDataStream&  stream, const Card& card);
     //  friend QDataStream& operator<<(QDataStream&  stream, const Card& card);
      // friend QDataStream& operator>>(QDataStream& stream, Card& card);
    
    private:
    
       const MyCard x;
    
        QList<MyCard> _card;
    
       // QList<MyCard> card1;
    
    };


    Card.cpp
    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;
    
    }
    
    MyCard Card::returnList()
    {
    
        int sum = 800;
         int profit = 700;
         int rate = 300;
         int balance = sum + profit - rate;
        MyCard x("8812913", "Person1", (qint32)sum, (qint32)profit, (qint32)rate, (qint32)balance);
       return x;
    
    
    }
    
    int Card:: rowCount(const QModelIndex&) const
    {
        // Сколько карт, столько и строк
            return _card.size();
    }
    
    int  returnSum()
    {
    
       MyCard x;
       return x._sum;
    
    
    }
    
    
    
    int Card::columnCount(const QModelIndex&) const
    {// Сколько полей в классе Card, столько же колонок
            return 6;
    }
    // Значение ячейки в таблице//  Параметр  index  указывает  на  ту  ячейку,  которую  сейчас настраиваем//
        //role позволяет настраивать разные свойства ячейки
    
    
    QVariant Card:: data(const QModelIndex& index, int role) const
        {// role -отображаемый текст в ячейке
    
            if(role == Qt::DisplayRole)
            {// Находим карту, соответствующую текущей строке
    
              const  MyCard& card =_card[index.row()];
                //  Возвращаем  значение,  соответствующее  текущей колонке
                switch(index.column())
                {
                  case 0:
                     return card.getNumber();
    
                  case 1:
                     return card.getName();
    
                  case 2:
                     return card.getSum();
    
                case 3:
                     return card.getProfit();
    
                case 4:
                     return card.getRate();
    
                case 5:
                    return card.getBalance();
                }
            }// Для остальных ролей используем пустое значение QVariant()
    
            return QVariant();
    }
    
    
    
    QVariant Card:: headerData(int section, Qt::Orientation orientation, int role) const
        {// Роль-отображаемыйтекст
            if(role   == Qt::DisplayRole &&   orientation   == Qt::Horizontal)
            {//Возвращаем  значение,  соответствующее  текущей колонке
                switch(section)
                {
                case 0:
                    return "Number";
                case 1:
                return "Name";
                case 2:
                return "Sum";
                case 3:
                return  "Profit";
               case 4:
                return "Rate";
                case 5:
                    return "Balance";
                }
            }//  Для остальных  ролей  и  заголовков  строк  используем поведение по умолчанию
            return QAbstractTableModel::headerData(section, orientation, role);
    }
    
    QList<MyCard> Card::card() const
    {
        return _card;
    }
    
    void Card::setCard(const QList<MyCard> &card)
    {
        _card = card;
    }
    
    
    
    
    MyCard::MyCard(const QString &number, const QString &name, int sum, int profit, int rate, int balance)
    {
        _number = number;
        _name = name;
        _sum = sum;
        _profit = profit;
        _rate = rate;
        balance = sum + profit - rate;
        _balance = balance;
    
    
    }
    
    
    int MyCard::getProfit() const
    {
        return _profit;
    
    }
    
    void MyCard::setProfit(int profit)
    {
        _profit = profit;
    }
    
    int MyCard::getRate() const
    {
        return _rate;
    }
    
    void MyCard::setRate(int rate)
    {
        _rate = rate;
    }
    
    int MyCard::getBalance() const
    {
        return _balance;
    
    }
    
    void MyCard::setBalance(int balance)
    {
        _balance = balance;
    
    }
    
    QString MyCard::getNumber() const
    {
        return _number;
    
    
    }
    
    void MyCard::setNumber( QString number)
    {
        _number = number;
    
    }
    
    QString MyCard::getName() const
    {
        return _name;
    
    
    }
    
    void MyCard::setName(QString name)
    {
        _name = name;
    }
    
    
    
    void MyCard::setSum(int sum)
    {
        _sum = sum;
    }
    
    int MyCard::getSum() const
    {
        return MyCard::_sum;
    
    }


    MainWindow.cpp
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        //Создаем нашу модель и связываем ее с представлением
        ui -> tableView -> setModel(&_card);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }


    MainWindow.h
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include "card.h"
    #include "QAbstractItemModel"
    #include "QTableView"
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private slots:
       // void on_pushButton_clicked();
    
       // void on_pushButton2_clicked();
    
       // void on_pushButton3_clicked();
    
        void on_Read_triggered();
    
        void on_Write_triggered();
    
        void on_pushButton2_clicked();
    
    signals:
    private:
        Ui::MainWindow *ui;
    
        Card _card;
        
    };


    Или это не то?