Add recordpanel beside datagrid
This commit is contained in:
parent
d178d5191c
commit
04ce099adf
12 changed files with 538 additions and 8 deletions
|
|
@ -1,10 +1,13 @@
|
|||
#include "DataGridWidget.h"
|
||||
#include "CrudModel.h"
|
||||
#include "CustomDataRole.h"
|
||||
#include "RecordPanel.h"
|
||||
#include "ResultTableModelUtil.h"
|
||||
#include "util/PgLabItemDelegate.h"
|
||||
#include <QAction>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QSortFilterProxyModel>
|
||||
#include <QSplitter>
|
||||
#include <QStyle>
|
||||
#include <QTableView>
|
||||
#include <QToolBar>
|
||||
|
|
@ -36,12 +39,28 @@ DataGridWidget::DataGridWidget(QWidget *parent)
|
|||
m_toolbar->addAction(m_actRevert);
|
||||
connect(m_actRevert, &QAction::triggered, this, &DataGridWidget::onRevert);
|
||||
|
||||
m_view = new QTableView(this);
|
||||
layout->addWidget(m_view);
|
||||
m_actRecord = new QAction(tr("Record"), this);
|
||||
m_actRecord->setCheckable(true);
|
||||
m_actRecord->setChecked(true);
|
||||
m_actRecord->setToolTip(tr("Show the values of the current row next to the grid"));
|
||||
m_toolbar->addAction(m_actRecord);
|
||||
|
||||
m_view = new QTableView(this);
|
||||
SetTableViewDefault(m_view);
|
||||
auto delegate = new PgLabItemDelegate(m_view);
|
||||
m_view->setItemDelegate(delegate);
|
||||
|
||||
m_splitter = new QSplitter(Qt::Horizontal, this);
|
||||
layout->addWidget(m_splitter);
|
||||
m_splitter->addWidget(m_view);
|
||||
|
||||
m_recordPanel = new RecordPanel(this);
|
||||
m_recordPanel->setFirstDataColumn(CrudModel::PreColumnCount);
|
||||
m_splitter->addWidget(m_recordPanel);
|
||||
m_splitter->setStretchFactor(0, 1);
|
||||
m_splitter->setStretchFactor(1, 0);
|
||||
|
||||
connect(m_actRecord, &QAction::toggled, m_recordPanel, &QWidget::setVisible);
|
||||
}
|
||||
|
||||
void DataGridWidget::setSourceModel(QAbstractItemModel *model)
|
||||
|
|
@ -51,13 +70,18 @@ void DataGridWidget::setSourceModel(QAbstractItemModel *model)
|
|||
m_proxy->setSortRole(CustomSortRole);
|
||||
}
|
||||
disconnect(m_pendingChangesConnection);
|
||||
disconnect(m_currentRowConnection);
|
||||
m_proxy->setSourceModel(model);
|
||||
m_view->setModel(m_proxy);
|
||||
m_view->setSortingEnabled(true);
|
||||
m_proxy->sort(0, Qt::AscendingOrder);
|
||||
|
||||
m_recordPanel->setModel(m_proxy);
|
||||
m_currentRowConnection = connect(m_view->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &DataGridWidget::onCurrentRowChanged);
|
||||
|
||||
auto crud = qobject_cast<CrudModel *>(model);
|
||||
m_toolbar->setVisible(crud != nullptr);
|
||||
m_actSave->setVisible(crud != nullptr);
|
||||
m_actRevert->setVisible(crud != nullptr);
|
||||
if (crud) {
|
||||
m_pendingChangesConnection = connect(crud, &CrudModel::pendingChangesChanged, this, &DataGridWidget::onPendingChangesChanged);
|
||||
onPendingChangesChanged(crud->hasPendingChanges());
|
||||
|
|
@ -67,6 +91,11 @@ void DataGridWidget::setSourceModel(QAbstractItemModel *model)
|
|||
}
|
||||
}
|
||||
|
||||
void DataGridWidget::onCurrentRowChanged(const QModelIndex ¤t)
|
||||
{
|
||||
m_recordPanel->setCurrentRow(current.row());
|
||||
}
|
||||
|
||||
void DataGridWidget::onPendingChangesChanged(bool hasChanges)
|
||||
{
|
||||
m_actSave->setEnabled(hasChanges);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue