diff --git a/include/attributeSelector.h b/include/attributeSelector.h index ff6e317..23f3a47 100644 --- a/include/attributeSelector.h +++ b/include/attributeSelector.h @@ -54,6 +54,9 @@ private: QString m_fliterChars_type; QString m_curModelName; QString m_curGroupName; + +signals: + void completeSelection(QVector>); }; #endif //ATTRIBUTESELECTOR_H diff --git a/include/attributeTableModel.h b/include/attributeTableModel.h index a54caa0..afbb56a 100644 --- a/include/attributeTableModel.h +++ b/include/attributeTableModel.h @@ -86,12 +86,12 @@ public: void refresh(); void forceRefresh(); //强制刷新(不会出现询问提示,数据同步时会用到) void insertRecord(int); - void addRecords(QList); + void addRecords(QVector>); void removeRecord(); bool removeRecord(int); void submitChanges(); //提交更改(增、删、改) void cancleChanges(); //取消修改 - QList getSelectedRowData(); + QVector> getSelectedRowData(); //展示列控制 //void setVisibleColumns(const QStringList& columns); diff --git a/include/dbBrowser.h b/include/dbBrowser.h index 9317551..d264db8 100644 --- a/include/dbBrowser.h +++ b/include/dbBrowser.h @@ -45,6 +45,9 @@ private slots: void onBtnClicked_lastPage(); void onEditingFinished_page(); +public slots: + void processAttributeSelectedData(QVector>); + private: int tabIndex(const QString&); diff --git a/source/attributeSelector.cpp b/source/attributeSelector.cpp index 223f1ba..309f666 100644 --- a/source/attributeSelector.cpp +++ b/source/attributeSelector.cpp @@ -212,7 +212,10 @@ void AttributeSelector::onBtnClicked_refreshData() void AttributeSelector::onBtnClicked_submitSelect() { + QVector> selectedResult = m_attributeView->model()->getSelectedRowData(); + emit completeSelection(selectedResult); + close(); } void AttributeSelector::onBtnClicked_cancleSelect() diff --git a/source/attributeTableModel.cpp b/source/attributeTableModel.cpp index 8a8ded3..981d7d6 100644 --- a/source/attributeTableModel.cpp +++ b/source/attributeTableModel.cpp @@ -568,14 +568,14 @@ void AttributeTableModel::insertRecord(int row) endInsertRows(); } -void AttributeTableModel::addRecords(QList records) +void AttributeTableModel::addRecords(QVector> records) { - QList validRecords; + QVector> validRecords; //首先过滤掉已经存在记录 - for(const RowData& record : records) + for(const QVector& record : records) { - int id = record.values.last().toInt(); //目前该函数的数据源都来‘属性选择器’(都是已创建好的属性) - QString type = record.values.value(0).toString(); + int id = record.last().toInt(); //目前该函数的数据源都来‘属性选择器’(都是已创建好的属性) + QString type = record.value(0).toString(); bool existed = attributeTypeExistsInCurrentGroup(id, type); if(!existed) validRecords.append(record); @@ -583,14 +583,14 @@ void AttributeTableModel::addRecords(QList records) if(validRecords.count() == 0) return; - beginInsertRows(QModelIndex(), rowCount(), rowCount() + records.count() - 1); + beginInsertRows(QModelIndex(), rowCount(), rowCount() + validRecords.count() - 1); int row = m_currentPageData.count(); - for(const RowData& record : records) + for(const QVector& record : validRecords) { RowData newRow; newRow.state = New; - newRow.values = record.values; + newRow.values = record; int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row; m_modifiedRows[globalRow] = newRow; @@ -746,14 +746,14 @@ void AttributeTableModel::cancleChanges() emit syncDataStatus(dataHasbeenModified(), m_paginationInfo); } -QList AttributeTableModel::getSelectedRowData() +QVector> AttributeTableModel::getSelectedRowData() { - QList result; + QVector> result; for(int row = 0; row < rowCount(); row++) { QModelIndex numberIndex = createIndex(row, 0); if(m_selectionModel && m_selectionModel->isSelected(numberIndex)) - result.append(m_currentPageData.at(row)); + result.append(m_currentPageData.at(row).values); } return result; } diff --git a/source/dbBrowser.cpp b/source/dbBrowser.cpp index 08bc8ed..d02147b 100644 --- a/source/dbBrowser.cpp +++ b/source/dbBrowser.cpp @@ -370,3 +370,20 @@ void DatabaseBrowser::onShowMessage(MessageDialogType type,const QString& strTit if(m_pMainWindow) m_pMainWindow->showMessageDialog(type, strTitle, strContent); } + +void DatabaseBrowser::processAttributeSelectedData(QVector> datas) +{ + QWidget* widget = ui->tabWidget->currentWidget(); + AttributeView* attributeView = qobject_cast(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); + } + } +} diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp index 409e59c..86827b7 100644 --- a/source/mainwindow.cpp +++ b/source/mainwindow.cpp @@ -338,6 +338,7 @@ void MainWindow::onSIG_openAttributeSelector() m_pAttributeSelector->setMainWindow(this); m_pAttributeSelector->installEventFilter(this); 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;