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ń:
- 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 ?
- Jeżeli dałoby się zastosować jakieś wirtualne funkcje z powyższych klas, to jakie to będą funkcje do tego celu ?
- 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