完成‘修改模型信息’时更改了模型名称,该模型下被打开的属性组浏览tab的文字也做同步更新
This commit is contained in:
parent
4c3f3db44b
commit
2fa520e6a6
|
|
@ -25,6 +25,7 @@ public:
|
|||
void addTab_attribute(const QString&, ModelAttributeGroup&);
|
||||
void closeTab_attribute(ModelAttributeGroup&);
|
||||
void closeAllTab_attribute();
|
||||
void updateTabTextByModelNameChanged(const QString&, const QString&);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject*, QEvent*) override;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ signals:
|
|||
|
||||
public slots:
|
||||
void refreshStructure_Connection(const QString& connection); //刷新某个链接的数据(比如刷新、关闭或者手动刷新时)
|
||||
void refreshStructure_Model(const QString& connection, int modelID);
|
||||
|
||||
private:
|
||||
DBStructureNode* getNode(const QModelIndex& index) const;
|
||||
|
|
|
|||
|
|
@ -67,7 +67,8 @@ private slots:
|
|||
void onSIG_connectionStatusChanged(const QString& strConnectionName, bool bConnected);
|
||||
void onSIG_addModel(Model&);
|
||||
void onSIG_addGroups(int, QVector<int>);
|
||||
void onSIG_updateModelNodeText(int, const QString&);
|
||||
void onSIG_updateModelNodeText(int, const QString&, const QString&);
|
||||
void onSIG_updateModelGroups(int, const QVector<int>&, const QVector<int>&);
|
||||
//void onSIG_addAttributes();
|
||||
void onSIG_openAttributeInfo(const QString&, ModelAttributeGroup&);
|
||||
void onSIG_closeAttributeInfo(ModelAttributeGroup&);
|
||||
|
|
|
|||
|
|
@ -57,7 +57,8 @@ private:
|
|||
|
||||
signals:
|
||||
void addModel(Model&);
|
||||
void updateModelNodeText(int, const QString&);
|
||||
void updateModelNodeText(int, const QString&, const QString&);
|
||||
void updateModelGroups(int, const QVector<int>&, const QVector<int>&);
|
||||
|
||||
public slots:
|
||||
void onBtnClicked_selectImage();
|
||||
|
|
|
|||
|
|
@ -152,6 +152,19 @@ void DatabaseBrowser::closeAllTab_attribute()
|
|||
onTabCloseRequested(0);
|
||||
}
|
||||
|
||||
void DatabaseBrowser::updateTabTextByModelNameChanged(const QString& oldName, const QString& newName)
|
||||
{
|
||||
for(int i = 0; i < ui->tabWidget->count(); i++)
|
||||
{
|
||||
QStringList textList = ui->tabWidget->tabText(i).split("/");
|
||||
if(textList.size() == 2 && textList.at(0) == oldName)
|
||||
{
|
||||
QString newTabText = newName + "/" + textList.at(1);
|
||||
ui->tabWidget->setTabText(i, newTabText);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DatabaseBrowser::onTabCloseRequested(int index)
|
||||
{
|
||||
/*QObject* sender = QObject::sender();
|
||||
|
|
|
|||
|
|
@ -265,14 +265,14 @@ void DBStructureModel::addDataGroup(const QString& connection, int modelID, QVec
|
|||
DBStructureNode* connNode = getConnectionNode(connection);
|
||||
if(!connNode)
|
||||
{
|
||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加数组时获取ConnectionNode失败,节点名称:%1").arg(connection));
|
||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加属性组时获取ConnectionNode失败,节点名称:%1").arg(connection));
|
||||
return;
|
||||
}
|
||||
|
||||
DBStructureNode* modelNode = getModelNode(connNode, modelID);
|
||||
if(!connNode)
|
||||
{
|
||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加数组时获取ModelNode失败,节点ID:%1").arg(modelID));
|
||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"添加属性组时获取ModelNode失败,节点ID:%1").arg(modelID));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -409,5 +409,49 @@ void DBStructureModel::refreshStructure_Connection(const QString& connection)
|
|||
QModelIndex bottomRight = index(connNode->row(), 0, QModelIndex());
|
||||
emit dataChanged(topLeft, bottomRight, {Qt::DecorationRole});
|
||||
}
|
||||
}
|
||||
|
||||
void DBStructureModel::refreshStructure_Model(const QString& connection, int modelID)
|
||||
{
|
||||
DBStructureNode* connNode = getConnectionNode(connection);
|
||||
if(!connNode)
|
||||
{
|
||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"刷新模型节点时获取ConnectionNode失败,节点名称:%1").arg(connection));
|
||||
return;
|
||||
}
|
||||
QModelIndex connIndex = index(connNode->row(), 0, QModelIndex());
|
||||
|
||||
DBStructureNode* modelNode = getModelNode(connNode, modelID);
|
||||
if(!connNode)
|
||||
{
|
||||
LOG_ERROR("DBStructureModel", QString::fromWCharArray(L"刷新模型节点时获取ModelNode失败,节点ID:%1").arg(modelID));
|
||||
return;
|
||||
}
|
||||
|
||||
//先删除
|
||||
if(modelNode->childCount() > 0)
|
||||
{
|
||||
beginRemoveRows(index(modelNode->row(), 0, connIndex), 0, modelNode->childCount() - 1);
|
||||
modelNode->removeAllChildren();
|
||||
endRemoveRows(); //该语句之后会触发rowsRemoved(const QModelIndex &parent, int first, int last)信号,通知视图刷新对应行
|
||||
}
|
||||
|
||||
//读取最新数据重新添加
|
||||
QVector<int> groups = SqlQueryExecutor::instance().getModelGroups(connection, modelID);
|
||||
beginInsertRows(index(modelNode->row(), 0, connIndex), 0, groups.count() - 1);
|
||||
|
||||
for(int groupID : groups)
|
||||
{
|
||||
//QString groupName = SqlQueryExecutor::instance().getAttributeGroupName(connection, groupID);
|
||||
AttributeGroup group = SqlQueryExecutor::instance().getAttributeGroupData(connection, groupID);
|
||||
if(group.name.isEmpty())
|
||||
continue;
|
||||
DBStructureNode* groupNode = new DBStructureNode(GroupNode, group.name, modelNode);
|
||||
groupNode->setData(Qt::UserRole + NodeDataRole::ID, groupID);
|
||||
groupNode->setData(Qt::UserRole + NodeDataRole::Type, group.isPublic);
|
||||
modelNode->appendChild(groupNode);
|
||||
}
|
||||
|
||||
endInsertRows();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -307,7 +307,11 @@ void DBStructureView::showContextMenu(const QPoint& pos)
|
|||
closeAttributeGroup(node);
|
||||
removeNode(node);
|
||||
});
|
||||
menu.addAction(QString::fromWCharArray(L"刷新"), []{});
|
||||
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());
|
||||
|
|
|
|||
|
|
@ -351,10 +351,24 @@ void MainWindow::onSIG_addGroups(int modelID, QVector<int> groups)
|
|||
m_pDBStrutureModel->addDataGroup(connection, modelID, groups);
|
||||
}
|
||||
|
||||
void MainWindow::onSIG_updateModelNodeText(int modelID, const QString& text)
|
||||
void MainWindow::onSIG_updateModelNodeText(int modelID, const QString& oldText, const QString& newText)
|
||||
{
|
||||
QString connection = m_pDBStrutureView->curConnection();
|
||||
m_pDBStrutureModel->updateDataModelName(connection, modelID, text);
|
||||
m_pDBStrutureModel->updateDataModelName(connection, modelID, newText);
|
||||
//更新tab的text(若打开)
|
||||
if(m_dbBrowser)
|
||||
m_dbBrowser->updateTabTextByModelNameChanged(oldText, newText);
|
||||
}
|
||||
|
||||
void MainWindow::onSIG_updateModelGroups(int modelID, const QVector<int>& removed, const QVector<int>& added)
|
||||
{
|
||||
//执行步骤: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()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onSIG_openAttributeInfo(const QString& connection, ModelAttributeGroup& attributeGroup)
|
||||
|
|
|
|||
|
|
@ -372,14 +372,14 @@ void ModelInfoEditDialog::onBtnClicked_save()
|
|||
{
|
||||
if(modelName != m_oldName) //更新对应树节点
|
||||
{
|
||||
emit updateModelNodeText(m_curModelID, modelName);
|
||||
emit updateModelNodeText(m_curModelID, m_oldName, modelName);
|
||||
}
|
||||
//计算删除和添加的属性组-转化为QSet,然后利用QSet的‘-’运算符操作
|
||||
QSet<int> oldSet(m_oldGroups.begin(), m_oldGroups.end());
|
||||
QSet<int> newSet(model.groups.begin(), model.groups.end());
|
||||
QSet<int> added = newSet - oldSet;
|
||||
QSet<int> removed = oldSet - newSet;
|
||||
|
||||
emit updateModelGroups(m_curModelID, removed.values(), added.values());
|
||||
|
||||
close();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue