do wątku który utworzyłem tutaj wrócę, bo muszę się zastanowić co odpisać. Chyba to będzie coś grubszego...

No ale zakładam nowy wątek i pada najprostsze z możliwych pytań:

  1. Czy dodawanie i usuwanie wierszy da się napisać w inny bardziej rozbudowany sposób ? Np wykorzystując funkcje wirtualne z jednej z klas np QAbstractItemModel lub QStandardItemModel ?
  2. Jeżeli dałoby się zastosować jakieś wirtualne funkcje z powyższych klas, to jakie to będą funkcje do tego celu ?
  3. Czy dodawanie i usuwanie wierszy które napisałem jest w pełni poprawnie napisane ? Czy ktoś z was miałby jakieś uwagi ?

kod

#include "mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    this->resize(500,400);

    mainWidget = new QWidget(this);

    mainLayout = new QVBoxLayout(mainWidget);
    
    standardItem = new QStandardItem();
    standardItem->setText("test2");

    standardModel = new QStandardItemModel(this);
    standardModel->appendColumn(list);
    //    standardModel->insertRow(1,standardItem);
    standardModel->setHorizontalHeaderItem(0,nameColumn1);
    standardModel->setVerticalHeaderItem(0,nameRow1);
    standardModel->setVerticalHeaderItem(1,nameRow2);

    viewTable = new QTableView(this);
    viewTable->setModel(standardModel);

    buttonLayout = new QHBoxLayout();

    buttonAdd = new QPushButton(this);
    buttonAdd->setText(QString("Wstaw rekord"));

    buttonRemove = new QPushButton(this);
    buttonRemove->setText(QString("Usuń rekord"));

    mainLayout->addWidget(viewTable);
    mainLayout->addLayout(buttonLayout);
    buttonLayout->addWidget(buttonAdd);
    buttonLayout->addWidget(buttonRemove);

    this->setCentralWidget(mainWidget);

    QObject::connect(buttonAdd, &QPushButton::clicked, this, &MainWindow::AddRow);
    QObject::connect(buttonRemove, &QPushButton::clicked, this, &MainWindow::RemoveRow);
    QObject::connect(viewTable, &QTableView::clicked, this, &MainWindow::SelectedRow);
}

void MainWindow::AddRow()
{
    newItem = new QStandardItem();

    standardModel->appendRow(newItem);
}

void MainWindow::SelectedRow(const QModelIndex &idx)
{
    row = idx.row();
}

void MainWindow::RemoveRow()
{
    standardModel->removeRow(row,QModelIndex());
    row=-1;
}

MainWindow::~MainWindow()
{
}

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWidget>
#include <QVBoxLayout>
#include <QTableView>
#include <QStandardItemModel>
#include <QStandardItem>
#include <QHBoxLayout>
#include <QPushButton>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    int row=-1;

    QWidget *mainWidget;
    QVBoxLayout *mainLayout;
    QStandardItemModel *standardModel;
    QStandardItem *standardItem, *newItem;
    QTableView *viewTable;
    QHBoxLayout *buttonLayout;
    QPushButton *buttonAdd, *buttonRemove;

private slots:
    void AddRow();
    void SelectedRow(const QModelIndex &idx);
    void RemoveRow();
};
#endif // MAINWINDOW_H