完成‘属性选择器’的开发
This commit is contained in:
parent
122ac57e3d
commit
0339082a45
|
|
@ -54,6 +54,9 @@ private:
|
||||||
QString m_fliterChars_type;
|
QString m_fliterChars_type;
|
||||||
QString m_curModelName;
|
QString m_curModelName;
|
||||||
QString m_curGroupName;
|
QString m_curGroupName;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void completeSelection(QVector<QVector<QVariant>>);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //ATTRIBUTESELECTOR_H
|
#endif //ATTRIBUTESELECTOR_H
|
||||||
|
|
|
||||||
|
|
@ -86,12 +86,12 @@ public:
|
||||||
void refresh();
|
void refresh();
|
||||||
void forceRefresh(); //强制刷新(不会出现询问提示,数据同步时会用到)
|
void forceRefresh(); //强制刷新(不会出现询问提示,数据同步时会用到)
|
||||||
void insertRecord(int);
|
void insertRecord(int);
|
||||||
void addRecords(QList<RowData>);
|
void addRecords(QVector<QVector<QVariant>>);
|
||||||
void removeRecord();
|
void removeRecord();
|
||||||
bool removeRecord(int);
|
bool removeRecord(int);
|
||||||
void submitChanges(); //提交更改(增、删、改)
|
void submitChanges(); //提交更改(增、删、改)
|
||||||
void cancleChanges(); //取消修改
|
void cancleChanges(); //取消修改
|
||||||
QList<RowData> getSelectedRowData();
|
QVector<QVector<QVariant>> getSelectedRowData();
|
||||||
|
|
||||||
//展示列控制
|
//展示列控制
|
||||||
//void setVisibleColumns(const QStringList& columns);
|
//void setVisibleColumns(const QStringList& columns);
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,9 @@ private slots:
|
||||||
void onBtnClicked_lastPage();
|
void onBtnClicked_lastPage();
|
||||||
void onEditingFinished_page();
|
void onEditingFinished_page();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void processAttributeSelectedData(QVector<QVector<QVariant>>);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int tabIndex(const QString&);
|
int tabIndex(const QString&);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,10 @@ void AttributeSelector::onBtnClicked_refreshData()
|
||||||
|
|
||||||
void AttributeSelector::onBtnClicked_submitSelect()
|
void AttributeSelector::onBtnClicked_submitSelect()
|
||||||
{
|
{
|
||||||
|
QVector<QVector<QVariant>> selectedResult = m_attributeView->model()->getSelectedRowData();
|
||||||
|
emit completeSelection(selectedResult);
|
||||||
|
|
||||||
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AttributeSelector::onBtnClicked_cancleSelect()
|
void AttributeSelector::onBtnClicked_cancleSelect()
|
||||||
|
|
|
||||||
|
|
@ -568,14 +568,14 @@ void AttributeTableModel::insertRecord(int row)
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AttributeTableModel::addRecords(QList<RowData> records)
|
void AttributeTableModel::addRecords(QVector<QVector<QVariant>> records)
|
||||||
{
|
{
|
||||||
QList<RowData> validRecords;
|
QVector<QVector<QVariant>> validRecords;
|
||||||
//首先过滤掉已经存在记录
|
//首先过滤掉已经存在记录
|
||||||
for(const RowData& record : records)
|
for(const QVector<QVariant>& record : records)
|
||||||
{
|
{
|
||||||
int id = record.values.last().toInt(); //目前该函数的数据源都来‘属性选择器’(都是已创建好的属性)
|
int id = record.last().toInt(); //目前该函数的数据源都来‘属性选择器’(都是已创建好的属性)
|
||||||
QString type = record.values.value(0).toString();
|
QString type = record.value(0).toString();
|
||||||
bool existed = attributeTypeExistsInCurrentGroup(id, type);
|
bool existed = attributeTypeExistsInCurrentGroup(id, type);
|
||||||
if(!existed)
|
if(!existed)
|
||||||
validRecords.append(record);
|
validRecords.append(record);
|
||||||
|
|
@ -583,14 +583,14 @@ void AttributeTableModel::addRecords(QList<RowData> records)
|
||||||
if(validRecords.count() == 0)
|
if(validRecords.count() == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
beginInsertRows(QModelIndex(), rowCount(), rowCount() + records.count() - 1);
|
beginInsertRows(QModelIndex(), rowCount(), rowCount() + validRecords.count() - 1);
|
||||||
|
|
||||||
int row = m_currentPageData.count();
|
int row = m_currentPageData.count();
|
||||||
for(const RowData& record : records)
|
for(const QVector<QVariant>& record : validRecords)
|
||||||
{
|
{
|
||||||
RowData newRow;
|
RowData newRow;
|
||||||
newRow.state = New;
|
newRow.state = New;
|
||||||
newRow.values = record.values;
|
newRow.values = record;
|
||||||
|
|
||||||
int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row;
|
int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row;
|
||||||
m_modifiedRows[globalRow] = newRow;
|
m_modifiedRows[globalRow] = newRow;
|
||||||
|
|
@ -746,14 +746,14 @@ void AttributeTableModel::cancleChanges()
|
||||||
emit syncDataStatus(dataHasbeenModified(), m_paginationInfo);
|
emit syncDataStatus(dataHasbeenModified(), m_paginationInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<AttributeTableModel::RowData> AttributeTableModel::getSelectedRowData()
|
QVector<QVector<QVariant>> AttributeTableModel::getSelectedRowData()
|
||||||
{
|
{
|
||||||
QList<RowData> result;
|
QVector<QVector<QVariant>> result;
|
||||||
for(int row = 0; row < rowCount(); row++)
|
for(int row = 0; row < rowCount(); row++)
|
||||||
{
|
{
|
||||||
QModelIndex numberIndex = createIndex(row, 0);
|
QModelIndex numberIndex = createIndex(row, 0);
|
||||||
if(m_selectionModel && m_selectionModel->isSelected(numberIndex))
|
if(m_selectionModel && m_selectionModel->isSelected(numberIndex))
|
||||||
result.append(m_currentPageData.at(row));
|
result.append(m_currentPageData.at(row).values);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -370,3 +370,20 @@ void DatabaseBrowser::onShowMessage(MessageDialogType type,const QString& strTit
|
||||||
if(m_pMainWindow)
|
if(m_pMainWindow)
|
||||||
m_pMainWindow->showMessageDialog(type, strTitle, strContent);
|
m_pMainWindow->showMessageDialog(type, strTitle, strContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DatabaseBrowser::processAttributeSelectedData(QVector<QVector<QVariant>> datas)
|
||||||
|
{
|
||||||
|
QWidget* widget = ui->tabWidget->currentWidget();
|
||||||
|
AttributeView* attributeView = qobject_cast<AttributeView*>(widget);
|
||||||
|
if(attributeView)
|
||||||
|
{
|
||||||
|
QTableView* view = attributeView->view();
|
||||||
|
AttributeTableModel* model = attributeView->model();
|
||||||
|
if(view && model)
|
||||||
|
{
|
||||||
|
model->addRecords(datas);
|
||||||
|
ui->btnSave->setEnabled(true);
|
||||||
|
ui->btnCancle->setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,7 @@ void MainWindow::onSIG_openAttributeSelector()
|
||||||
m_pAttributeSelector->setMainWindow(this);
|
m_pAttributeSelector->setMainWindow(this);
|
||||||
m_pAttributeSelector->installEventFilter(this);
|
m_pAttributeSelector->installEventFilter(this);
|
||||||
connect(m_pAttributeSelector, &AttributeSelector::finished, this, [=]{ MaskManager::instance()->hideMask(m_pAttributeSelector); });
|
connect(m_pAttributeSelector, &AttributeSelector::finished, this, [=]{ MaskManager::instance()->hideMask(m_pAttributeSelector); });
|
||||||
|
connect(m_pAttributeSelector, &AttributeSelector::completeSelection, m_dbBrowser, &DatabaseBrowser::processAttributeSelectedData);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nX = (this->width() - m_pAttributeSelector->width()) * 0.5;
|
int nX = (this->width() - m_pAttributeSelector->width()) * 0.5;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue