diff --git a/source/dbBrowser.cpp b/source/dbBrowser.cpp index aec0eb4..5c79aa9 100644 --- a/source/dbBrowser.cpp +++ b/source/dbBrowser.cpp @@ -67,11 +67,16 @@ void DatabaseBrowser::setMainWindow(MainWindow* window) m_pMainWindow = window; } -int DatabaseBrowser::tabIndex(const QString& tabText) +int DatabaseBrowser::tabIndex(const QString& tabData) { + QTabBar* tabBar = ui->tabWidget->tabBar(); + if(!tabBar) + return -1; + for(int i = 0; i < ui->tabWidget->count(); i++) { - if(ui->tabWidget->tabText(i) == tabText) + //if(ui->tabWidget->tabText(i) == tabData) + if(tabBar->tabData(i).toString() == tabData) return i; } @@ -81,7 +86,8 @@ int DatabaseBrowser::tabIndex(const QString& tabText) void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttributeGroup& attributeGroup) { QString tabText = attributeGroup.strModelName + "/" + attributeGroup.strGroupName; - int index = tabIndex(tabText); + QString tabData = QString::number(attributeGroup.modelID) + "/" + QString::number(attributeGroup.groupID); + int index = tabIndex(tabData); if(index != -1) { ui->tabWidget->setCurrentIndex(index); @@ -94,6 +100,9 @@ void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttribute connect(view->model(), &AttributeTableModel::syncDataStatus, this, &DatabaseBrowser::onSyncDataStatus); connect(view->delegate(), &AttributeTableDelegate::showMessage, this, &DatabaseBrowser::onShowMessage); index = ui->tabWidget->addTab(view, QIcon(":/img/images/icon_hierarchy.png"), tabText); + QTabBar* tabBar = ui->tabWidget->tabBar(); + if(tabBar) + tabBar->setTabData(index, tabData); if(view->model()) view->model()->refresh(); //添加自定义按钮 @@ -126,7 +135,9 @@ void DatabaseBrowser::closeTab_attribute(ModelAttributeGroup& attributeGroup) //int tabCount = ui->tabWidget->count(); for(int i = 0; i < ui->tabWidget->count(); i++) { - if(ui->tabWidget->tabText(i).contains(attributeGroup.strModelName + "/")) + //if(ui->tabWidget->tabText(i).contains(attributeGroup.strModelName + "/")) + QString tabData = ui->tabWidget->tabBar()->tabData(i).toString(); + if(tabData.contains(QString::number(attributeGroup.modelID)+ "/")) { onTabCloseRequested(i); i--; @@ -136,8 +147,9 @@ void DatabaseBrowser::closeTab_attribute(ModelAttributeGroup& attributeGroup) } else //关闭具体的tab { - QString tabText = attributeGroup.strModelName + "/" + attributeGroup.strGroupName; - int index = tabIndex(tabText); + //QString tabText = attributeGroup.strModelName + "/" + attributeGroup.strGroupName; + QString tabData = QString::number(attributeGroup.modelID) + "/" + QString::number(attributeGroup.groupID); + int index = tabIndex(tabData); if(index == -1) return; diff --git a/source/dbStructureView.cpp b/source/dbStructureView.cpp index 9d9c5f6..afec31b 100644 --- a/source/dbStructureView.cpp +++ b/source/dbStructureView.cpp @@ -295,6 +295,15 @@ void DBStructureView::showContextMenu(const QPoint& pos) else if(node && node->type() == TableNode) { CustomMenu menu; + menu.addAction(QString::fromWCharArray(L"刷新"), [this, node]{ + DBStructureModel* model = dynamic_cast(this->model()); + if(model && node->parentNode()) + model->refreshStructure_Model(node->parentNode()->name(), node->data(Qt::UserRole + NodeDataRole::ID).toInt()); + }); + menu.addSeparator(); + menu.addAction(QString::fromWCharArray(L"修改"), [this, node]{ + emit acitonTrigger_updateModel(node->data(Qt::UserRole + NodeDataRole::ID).toInt()); + }); menu.addAction(QString::fromWCharArray(L"删除"), [this, node]{ if(m_pMainWindow) { @@ -307,20 +316,10 @@ void DBStructureView::showContextMenu(const QPoint& pos) closeAttributeGroup(node); removeNode(node); }); - menu.addAction(QString::fromWCharArray(L"刷新"), [this, node]{ - DBStructureModel* model = dynamic_cast(this->model()); - if(model && node->parentNode()) - model->refreshStructure_Model(node->parentNode()->name(), node->data(Qt::UserRole + NodeDataRole::ID).toInt()); - }); - menu.addSeparator(); - menu.addAction(QString::fromWCharArray(L"修改"), [this, node]{ - emit acitonTrigger_updateModel(node->data(Qt::UserRole + NodeDataRole::ID).toInt()); - }); - menu.addAction(QString::fromWCharArray(L"添加属性组"), [this, node]{ + /*menu.addAction(QString::fromWCharArray(L"添加属性组"), [this, node]{ emit actionTrigger_addGroup(node->data(Qt::UserRole + NodeDataRole::ID).toInt()); }); - //menu.addAction(QString::fromWCharArray(L"打开"), []{}); - /*menu.addSeparator(); + menu.addSeparator(); menu.addAction(QString::fromWCharArray(L"清空数据"), []{}); menu.addAction(QString::fromWCharArray(L"导入"), []{}); menu.addAction(QString::fromWCharArray(L"导出"), []{});*/ diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp index f6217b6..b83eaf0 100644 --- a/source/mainwindow.cpp +++ b/source/mainwindow.cpp @@ -205,6 +205,7 @@ void MainWindow::onActionTrigger_addModel() m_pModelInfoDialog->installEventFilter(this); connect(m_pModelInfoDialog, &ModelInfoEditDialog::addModel, this, &MainWindow::onSIG_addModel); connect(m_pModelInfoDialog, &ModelInfoEditDialog::updateModelNodeText, this, &MainWindow::onSIG_updateModelNodeText); + connect(m_pModelInfoDialog, &ModelInfoEditDialog::updateModelGroups, this, &MainWindow::onSIG_updateModelGroups); connect(m_pModelInfoDialog, &ModelInfoEditDialog::finished, this, [=]{ MaskManager::instance()->hideMask(m_pModelInfoDialog);}); } @@ -239,6 +240,7 @@ void MainWindow::onActionTrigger_updateModel(int modelID) m_pModelInfoDialog->installEventFilter(this); connect(m_pModelInfoDialog, &ModelInfoEditDialog::addModel, this, &MainWindow::onSIG_addModel); connect(m_pModelInfoDialog, &ModelInfoEditDialog::updateModelNodeText, this, &MainWindow::onSIG_updateModelNodeText); + connect(m_pModelInfoDialog, &ModelInfoEditDialog::updateModelGroups, this, &MainWindow::onSIG_updateModelGroups); connect(m_pModelInfoDialog, &ModelInfoEditDialog::finished, this, [=]{ MaskManager::instance()->hideMask(m_pModelInfoDialog);}); } @@ -364,11 +366,21 @@ void MainWindow::onSIG_updateModelGroups(int modelID, const QVector& remove { //执行步骤:1、删除相应数据行组. 2、添加相应属性组. 3、刷新模型节点 QString connection = m_pDBStrutureView->curConnection(); + //删除 for(int groupID : removed) { - // if(SqlQueryExecutor::instance().removeAttributeGroup(connection, modelID, groupID) && m_dbBrowser) - // m_dbBrowser->closeTab_attribute() + if(SqlQueryExecutor::instance().removeAttributeGroup(connection, modelID, groupID) && m_dbBrowser) + { + ModelAttributeGroup attributeGroup(modelID, groupID, "", ""); + m_dbBrowser->closeTab_attribute(attributeGroup); + } } + //添加 + bool result = SqlQueryExecutor::instance().addModleGroups(connection, modelID, added); + if(result) + m_pDBStrutureModel->addDataGroup(connection, modelID, added); + //刷新 + m_pDBStrutureModel->refreshStructure_Model(connection, modelID); } void MainWindow::onSIG_openAttributeInfo(const QString& connection, ModelAttributeGroup& attributeGroup)