test_sdk/gui/gtl_gui_meas_widget.cpp

78 lines
2.6 KiB
C++
Raw Normal View History

#include "gtl_gui_meas_widget.h"
#include "ui_gtl_gui_meas_widget.h"
namespace gtl {
namespace gui {
meas_widget::meas_widget(QWidget *parent, QAbstractItemModel* model, QStyledItemDelegate *delegate) :
QWidget(parent),
ui(new Ui::meas_widget),
_model(model),
_delegate(delegate),
_edited_column_count(2)
{
ui->setupUi(this);
_tableView = new QTableView;
_tableView->horizontalHeader()->setStretchLastSection(true);
ui->verticalLayout->addWidget(_tableView);
if(_model && _delegate)
{
_tableView->setModel(_model);
_tableView->setItemDelegateForColumn(0, _delegate);
_tableView->setItemDelegateForColumn(1, _delegate);
_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
_tableView->setContentsMargins(0,0,0,0);
connect(ui->addButton, &QPushButton::clicked, this, &meas_widget::add);
connect(ui->removeButton, &QPushButton::clicked, this, &meas_widget::remove);
}
this->hide();
}
meas_widget::~meas_widget()
{
delete ui;
}
void meas_widget::add()
{
if(_tableView && _model)
{
int row = _model->rowCount();
_model->insertRows(row, 1, QModelIndex());
for(int c = 0; c < _edited_column_count; ++c)
{
QModelIndex index = _model->index(row, c, QModelIndex());
_tableView->openPersistentEditor(index);
}
}
}
void meas_widget::remove()
{
if(_tableView && _model)
{
for(int r = 0; r < _model->rowCount(); ++r)
for(int c = 0; c < _edited_column_count; ++c)
{
QModelIndex index = _model->index(r, c, QModelIndex());
_tableView->closePersistentEditor(index);
}
int row = _tableView->currentIndex().row();
_model->removeRows(row, 1, QModelIndex());
for(int r = 0; r < _model->rowCount(); ++r)
for(int c = 0; c < _edited_column_count; ++c)
{
QModelIndex index = _model->index(r, c, QModelIndex());
_tableView->openPersistentEditor(index);
}
}
}
} // namespace gui
} // namespace gtl