完成模型信息的修改逻辑

This commit is contained in:
duanshengchao 2025-06-05 15:16:23 +08:00
parent 2fa520e6a6
commit a8644514ad
3 changed files with 43 additions and 20 deletions

View File

@ -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;

View File

@ -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<DBStructureModel*>(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<DBStructureModel*>(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"导出"), []{});*/

View File

@ -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,12 +366,22 @@ void MainWindow::onSIG_updateModelGroups(int modelID, const QVector<int>& 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)
{