Files
GostGenerator/view/projectparampreview.cpp
T

91 lines
2.5 KiB
C++

#include "projectparampreview.h"
#include <QDebug>
ProjectParamPreview::ProjectParamPreview(QWidget *parent)
: QWidget{parent}
, m_tableModel(nullptr)
{
setUp();
}
void ProjectParamPreview::setUp(){
setWidgets();
setUpLayout();
setUpConnections();
}
void ProjectParamPreview::setWidgets(){
m_tableView = new QTableView(this);
m_tableModel = new ProjectParamTableModel(this);
// Настраиваем таблицу
m_tableView->setModel(m_tableModel);
m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
m_tableView->setSelectionMode(QAbstractItemView::SingleSelection);
m_tableView->setAlternatingRowColors(true);
m_tableView->horizontalHeader()->setStretchLastSection(true);
m_tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
m_tableView->verticalHeader()->setVisible(false);
}
void ProjectParamPreview::setUpLayout(){
QVBoxLayout* mainLayout = new QVBoxLayout(this);
mainLayout->addWidget(m_tableView);
mainLayout->setContentsMargins(0, 0, 0, 0);
}
void ProjectParamPreview::setUpConnections(){
// Подключаем сигналы изменения данных
connect(m_tableModel, &ProjectParamTableModel::dataChanged,
this, [this](const QModelIndex &topLeft, const QModelIndex &bottomRight) {
if (topLeft.isValid() && topLeft.row() < m_tableModel->rowCount()) {
ProjectParamTableData param = m_tableModel->getProjectParam(topLeft.row());
emit projectParamChanged(topLeft.row(), param.name, param.value);
}
});
}
void ProjectParamPreview::updateView()
{
if (m_tableView) {
m_tableView->reset();
m_tableView->resizeColumnsToContents();
}
}
void ProjectParamPreview::setProjectParams(const QList<ProjectParamTableData> &params)
{
if (m_tableModel) {
m_tableModel->setProjectParams(params);
updateView();
}
}
void ProjectParamPreview::addProjectParam(const ProjectParamTableData &param)
{
if (m_tableModel) {
m_tableModel->addProjectParam(param);
emit projectParamAdded(param);
}
}
void ProjectParamPreview::removeProjectParam(int row)
{
if (m_tableModel && row >= 0 && row < m_tableModel->rowCount()) {
m_tableModel->removeProjectParam(row);
emit projectParamRemoved(row);
}
}
void ProjectParamPreview::clear()
{
if (m_tableModel) {
m_tableModel->clear();
}
}
ProjectParamTableModel* ProjectParamPreview::tableModel() const
{
return m_tableModel;
}