diff --git a/CMakeLists.txt b/CMakeLists.txt index 23ed543..fe1e990 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,7 @@ set(H_HEADER_FILES include/maskManager.h include/customBorderContainer.h include/groupSelectionDialog.h + include/dataSyncManager.h ) set(CPP_SOURCE_FILES @@ -74,6 +75,7 @@ set(CPP_SOURCE_FILES source/maskManager.cpp source/customBorderContainer.cpp source/groupSelectionDialog.cpp + source/dataSyncManager.cpp ) set(UI_FILES diff --git a/include/attributeTableModel.h b/include/attributeTableModel.h index 89b6cd2..e345d49 100644 --- a/include/attributeTableModel.h +++ b/include/attributeTableModel.h @@ -62,7 +62,7 @@ public: //分页控制 void setPageSize(int); int pageSize() const; - void setCurrentPage(int); + bool setCurrentPage(int); int currentPage() const; int totalPages() const; void previousPage(); @@ -73,6 +73,7 @@ public: //数据操作 //void setTable(const QString&); void refresh(); + void forceRefresh(); //强制刷新(不会出现询问提示,数据同步时会用到) void insertRecord(int); void removeRecord(int); void submitChanges(); //提交更改(增、删、改) @@ -84,6 +85,7 @@ public: //others QMap getDataTypes() {return m_dataTypes;} void triggerSyncSignal(); + bool dataHasbeenModified() {return !m_modifiedRows.isEmpty();}; signals: void syncDataStatus(bool, const PaginationInfo&); diff --git a/include/attributeView.h b/include/attributeView.h index a0b48d0..0a6a1da 100644 --- a/include/attributeView.h +++ b/include/attributeView.h @@ -25,10 +25,15 @@ public: AttributeTableDelegate* delegate() const { return m_attributeTableDelegate; } void active(); + void syncChangeRecord(); + +signals: + void showMessage(MessageDialogType,const QString&,const QString&); private: QString m_connection; QString m_attributeTable; + AttributeGroup m_attributeGroup; ModelAttributeGroup m_modelAttributeGroup; QTableView* m_tableView; diff --git a/include/dataSyncManager.h b/include/dataSyncManager.h new file mode 100644 index 0000000..acadd3e --- /dev/null +++ b/include/dataSyncManager.h @@ -0,0 +1,27 @@ +#ifndef DATASYNCMANAGER_H +#define DATASYNCMANAGER_H + +#include +#include +#include "global.h" + +class DataSyncManager : public QObject +{ + Q_OBJECT + +public: + static DataSyncManager& instance(); + + void registerPublicGroup(const QString&); //注册公共属性组 + AttributeGroup getGroup(int); + void syncGroupVersion(int, int); + int getGropuVersion(int);//获取属性组的版本号 + +private: + explicit DataSyncManager(); + ~DataSyncManager(); + + QHash m_publicGroups; +}; + +#endif //DATASYNCMANAGER_H diff --git a/include/dbBrowser.h b/include/dbBrowser.h index 130e5d3..ac22166 100644 --- a/include/dbBrowser.h +++ b/include/dbBrowser.h @@ -24,6 +24,7 @@ public: void setMainWindow(MainWindow*); void addTab_attribute(const QString&, ModelAttributeGroup&); void closeTab_attribute(ModelAttributeGroup&); + void closeAllTab_attribute(); private slots: void onTabCloseRequested(int); @@ -37,12 +38,19 @@ private slots: void onBtnClicked_cancleChanges(); void onBtnClicked_refreshData(); + void onBtnClicked_firstPage(); + void onBtnClicked_previousPage(); + void onBtnClicked_nextPage(); + void onBtnClicked_lastPage(); + void onEditingFinished_page(); + private: int tabIndex(const QString&); Ui::DatabaseBrowser *ui; MainWindow* m_pMainWindow; QList m_attributeViewList; + int m_previousTabIndex; }; #endif //DBBROWSER_H diff --git a/include/dbStructureView.h b/include/dbStructureView.h index 7cda25f..d6b6619 100644 --- a/include/dbStructureView.h +++ b/include/dbStructureView.h @@ -42,6 +42,7 @@ signals: void actionTrigger_addGroup(int); void openAttributeInfo(const QString&, ModelAttributeGroup&); void closeAttributeInfo(ModelAttributeGroup&); + void closeAllAttributeInfo(); private slots: void itemDoubleClick(const QModelIndex&); diff --git a/include/global.h b/include/global.h index 3303e14..23140a6 100644 --- a/include/global.h +++ b/include/global.h @@ -45,6 +45,7 @@ struct AttributeGroup QString type; //英文标识名称 QString remark; bool isPublic; + int version; //用来及记录pucblic类型属性组数据同步的标记 AttributeGroup() { @@ -53,15 +54,17 @@ struct AttributeGroup type = ""; remark = ""; isPublic = false; + version = 0; } //利用移动语义优化的构造函数(不定义也可以,QString实际上实现了隐式共享) - AttributeGroup(int id, QString name, QString type, QString remark, bool isPublic) + AttributeGroup(int id, QString name, QString type, QString remark, bool isPublic, int version = 0) : id(id), name(std::move(name)), type(std::move(type)), remark(std::move(remark)), - isPublic(isPublic){} + isPublic(isPublic), + version(version){} }; struct Model diff --git a/include/mainwindow.h b/include/mainwindow.h index cf8ad9a..a36f982 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -65,6 +65,7 @@ private slots: void onSIG_addGroups(int, QVector); void onSIG_openAttributeInfo(const QString&, ModelAttributeGroup&); void onSIG_closeAttributeInfo(ModelAttributeGroup&); + void onSIG_closeAllAttributeInfo(); }; #endif // MAINWINDOW_H diff --git a/include/messageDialog.h b/include/messageDialog.h index aad362a..22de76a 100644 --- a/include/messageDialog.h +++ b/include/messageDialog.h @@ -33,7 +33,7 @@ public: ~MessageDialog(); void setType(MessageDialogType); - void setMessage(MessageDialogType,const QString&,const QString&); + void setMessage(MessageDialogType, const QString&, const QString&); signals: void sgl_hide(); diff --git a/resource/PowerModeler.qrc b/resource/PowerModeler.qrc index 5876a27..e418cfd 100644 --- a/resource/PowerModeler.qrc +++ b/resource/PowerModeler.qrc @@ -1,5 +1,7 @@ + images/icon_hierarchy_unchecked.png + images/icon_hierarchy_disable.png images/icon_search_white.png images/icon_search.png images/icon_refresh3_disable.png diff --git a/resource/images/icon_hierarchy_disable.png b/resource/images/icon_hierarchy_disable.png new file mode 100644 index 0000000..e09b632 Binary files /dev/null and b/resource/images/icon_hierarchy_disable.png differ diff --git a/resource/images/icon_hierarchy_unchecked.png b/resource/images/icon_hierarchy_unchecked.png new file mode 100644 index 0000000..971741f Binary files /dev/null and b/resource/images/icon_hierarchy_unchecked.png differ diff --git a/source/attributeTableModel.cpp b/source/attributeTableModel.cpp index f1db170..08216c5 100644 --- a/source/attributeTableModel.cpp +++ b/source/attributeTableModel.cpp @@ -146,7 +146,7 @@ bool AttributeTableModel::setData(const QModelIndex &index, const QVariant &valu m_currentPageData[row] = modifiedRow; emit dataChanged(index, index, {role, Qt::UserRole + AttributeEidt::EditStatus}); - emit syncDataStatus(m_modifiedRows.isEmpty(), m_paginationInfo); + emit syncDataStatus(dataHasbeenModified(), m_paginationInfo); return true; } @@ -408,13 +408,16 @@ int AttributeTableModel::pageSize() const return m_paginationInfo.entriesPerPage; } -void AttributeTableModel::setCurrentPage(int page) +bool AttributeTableModel::setCurrentPage(int page) { if(m_paginationInfo.currentPage != page && page > 0 && page <= totalPages()) { m_paginationInfo.currentPage = page; refresh(); + return true; } + + return false; } int AttributeTableModel::currentPage() const { @@ -492,10 +495,10 @@ QList AttributeTableModel::filterRowsByEditState(E void AttributeTableModel::refresh() { - if(!m_modifiedRows.isEmpty()) + if(dataHasbeenModified()) { emit showMessage(type_question, QString::fromWCharArray(L"提示"), - QString::fromWCharArray(L"有编辑数据还未提交,确认刷新放弃提交吗?")); + QString::fromWCharArray(L"有编辑数据还未提交,确认要放弃吗?")); if(g_msgDlgBtn == btn_No) return; } @@ -503,7 +506,15 @@ void AttributeTableModel::refresh() m_modifiedRows.clear(); loadPageData(); updateTotalCount(); - emit syncDataStatus(m_modifiedRows.isEmpty(), m_paginationInfo); + emit syncDataStatus(dataHasbeenModified(), m_paginationInfo); +} + +void AttributeTableModel::forceRefresh() +{ + m_modifiedRows.clear(); + loadPageData(); + updateTotalCount(); + emit syncDataStatus(dataHasbeenModified(), m_paginationInfo); } void AttributeTableModel::insertRecord(int row) @@ -643,16 +654,16 @@ void AttributeTableModel::submitChanges() void AttributeTableModel::cancleChanges() { - if(m_modifiedRows.isEmpty()) + if(!dataHasbeenModified()) return; m_modifiedRows.clear(); loadPageData(); updateTotalCount(); - emit syncDataStatus(m_modifiedRows.isEmpty(), m_paginationInfo); + emit syncDataStatus(dataHasbeenModified(), m_paginationInfo); } void AttributeTableModel::triggerSyncSignal() { - emit syncDataStatus(m_modifiedRows.isEmpty(), m_paginationInfo); + emit syncDataStatus(dataHasbeenModified(), m_paginationInfo); } diff --git a/source/attributeView.cpp b/source/attributeView.cpp index bab7849..92c86de 100644 --- a/source/attributeView.cpp +++ b/source/attributeView.cpp @@ -1,6 +1,8 @@ #include "attributeView.h" #include "attributeTableDelegate.h" #include "multiLineHeaderView.h" +//#include "sqlQueryExecutor.h" +#include "dataSyncManager.h" #include #include #include @@ -11,6 +13,9 @@ AttributeView::AttributeView(const ModelAttributeGroup& modelAttributeGroup, QWi , m_attributeTable(tableName) , m_modelAttributeGroup(modelAttributeGroup) { + //需要进行数据同步,因此从PublicGroupSyncManager中统一获取数据 + m_attributeGroup = DataSyncManager::instance().getGroup(m_modelAttributeGroup.groupID); + m_tableView = new QTableView(this); m_tableView->setStyleSheet("QTableView::item{padding-left:5px;} QTableView::item:selected{border:1px solid rgb(70,130,180);}"); m_tableView->verticalHeader()->setVisible(false); @@ -57,5 +62,24 @@ AttributeView::~AttributeView() void AttributeView::active() { - m_attributeTableModel->triggerSyncSignal(); + if(m_attributeGroup.isPublic && m_attributeGroup.version != DataSyncManager::instance().getGropuVersion(m_attributeGroup.id)) + { + //提示强制刷新 + emit showMessage(type_information, QString::fromWCharArray(L"提示"), + QString::fromWCharArray(L"该属性组为公共组,检测到数据发生更新,需要进行强制刷新")); + + m_attributeTableModel->forceRefresh(); + m_attributeGroup.version = DataSyncManager::instance().getGropuVersion(m_attributeGroup.id); + } + else + m_attributeTableModel->triggerSyncSignal(); +} + +void AttributeView::syncChangeRecord() +{ + if(m_attributeGroup.isPublic) + { + m_attributeGroup.version++; + DataSyncManager::instance().syncGroupVersion(m_attributeGroup.id, m_attributeGroup.version); + } } diff --git a/source/dataSyncManager.cpp b/source/dataSyncManager.cpp new file mode 100644 index 0000000..5d80a0a --- /dev/null +++ b/source/dataSyncManager.cpp @@ -0,0 +1,49 @@ +#include "dataSyncManager.h" +#include "sqlQueryExecutor.h" + +DataSyncManager& DataSyncManager::instance() +{ + //采用静态局部变量的方式,静态局部变量的初始化是在第一次访问时,以后的调用不会多次初始化,并且生命周期和程序一致 + static DataSyncManager instance; + return instance; +} + +DataSyncManager::DataSyncManager() +{ +} +DataSyncManager::~DataSyncManager() +{} + + +void DataSyncManager::registerPublicGroup(const QString& connection) +{ + m_publicGroups.clear(); + const QVector groups = SqlQueryExecutor::instance().getAttributeGroup(connection); + for(const AttributeGroup& group : groups) + { + if(group.isPublic) + m_publicGroups.insert(group.id, group); + } +} + +AttributeGroup DataSyncManager::getGroup(int groupID) +{ + AttributeGroup group ; + if(m_publicGroups.contains(groupID)) + group = m_publicGroups.value(groupID); + return group; +} + +void DataSyncManager::syncGroupVersion(int groupID, int version) +{ + if(m_publicGroups.contains(groupID)) + m_publicGroups[groupID].version = version; +} + +int DataSyncManager::getGropuVersion(int groupID) +{ + int version = 0; + if(m_publicGroups.contains(groupID)) + version = m_publicGroups.value(groupID).version; + return version; +} diff --git a/source/dbBrowser.cpp b/source/dbBrowser.cpp index f49c95a..e1417ee 100644 --- a/source/dbBrowser.cpp +++ b/source/dbBrowser.cpp @@ -3,6 +3,7 @@ #include "mainwindow.h" #include "attributeView.h" #include +#include DatabaseBrowser::DatabaseBrowser(QWidget *parent) : QWidget(parent) @@ -10,6 +11,12 @@ DatabaseBrowser::DatabaseBrowser(QWidget *parent) , m_pMainWindow(nullptr) { ui->setupUi(this); + m_previousTabIndex = -1; + + //正则表达式,只能输入数字 + QRegularExpression regExp("[0-9]+"); + QRegularExpressionValidator* validator = new QRegularExpressionValidator(regExp, this); + ui->lineEditPage->setValidator(validator); connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &DatabaseBrowser::onTabCloseRequested); connect(ui->tabWidget, &QTabWidget::currentChanged, this, &DatabaseBrowser::onCurrentTabChanged); @@ -19,6 +26,13 @@ DatabaseBrowser::DatabaseBrowser(QWidget *parent) connect(ui->btnSave, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_submitChanges); connect(ui->btnCancle, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_cancleChanges); connect(ui->btnRefresh, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_refreshData); + + connect(ui->btnFirstPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_firstPage); + connect(ui->btnPreviousPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_previousPage); + connect(ui->btnNextPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_nextPage); + connect(ui->btnLastPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_lastPage); + + connect(ui->lineEditPage, &QLineEdit::returnPressed, this, &DatabaseBrowser::onEditingFinished_page); } DatabaseBrowser::~DatabaseBrowser() @@ -53,6 +67,7 @@ void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttribute } AttributeView* view = new AttributeView(attributeGroup, ui->tabWidget, connection); + connect(view, &AttributeView::showMessage, this, &DatabaseBrowser::onShowMessage); connect(view->model(), &AttributeTableModel::showMessage, this, &DatabaseBrowser::onShowMessage); connect(view->model(), &AttributeTableModel::syncDataStatus, this, &DatabaseBrowser::onSyncDataStatus); connect(view->delegate(), &AttributeTableDelegate::showMessage, this, &DatabaseBrowser::onShowMessage); @@ -90,6 +105,13 @@ void DatabaseBrowser::closeTab_attribute(ModelAttributeGroup& attributeGroup) onTabCloseRequested(index); } +void DatabaseBrowser::closeAllTab_attribute() +{ + int tabCount = ui->tabWidget->count(); + for(int index = 0; index < tabCount; index++) + onTabCloseRequested(0); +} + void DatabaseBrowser::onTabCloseRequested(int index) { /*QObject* sender = QObject::sender(); @@ -105,6 +127,12 @@ void DatabaseBrowser::onTabCloseRequested(int index) void DatabaseBrowser::onCurrentTabChanged(int index) { + if(m_previousTabIndex != -1) + { + ui->tabWidget->setTabIcon(m_previousTabIndex, QIcon(":/img/images/icon_hierarchy_unchecked.png")); + } + m_previousTabIndex = index; + if(index == -1) //最后一个tab关闭时会触发 { ui->btnAdd->setEnabled(false); @@ -114,11 +142,12 @@ void DatabaseBrowser::onCurrentTabChanged(int index) ui->btnSave->setEnabled(false); ui->btnCancle->setEnabled(false); ui->recordInfo->clear(); - ui->lineEdit->setEnabled(false); - ui->lineEdit->setText("1"); + ui->lineEditPage->setEnabled(false); + ui->lineEditPage->setText("1"); return; } + ui->tabWidget->setTabIcon(m_previousTabIndex, QIcon(":/img/images/icon_hierarchy.png")); QWidget* widget = ui->tabWidget->widget(index); AttributeView* attributeView = qobject_cast(widget); if(attributeView) @@ -183,7 +212,10 @@ void DatabaseBrowser::onBtnClicked_submitChanges() QTableView* view = attributeView->view(); AttributeTableModel* model = attributeView->model(); if(view && model) + { model->submitChanges(); + attributeView->syncChangeRecord(); + } } } @@ -213,15 +245,84 @@ void DatabaseBrowser::onBtnClicked_refreshData() } } +void DatabaseBrowser::onBtnClicked_firstPage() +{ + QWidget* widget = ui->tabWidget->currentWidget(); + AttributeView* attributeView = qobject_cast(widget); + if(attributeView) + { + QTableView* view = attributeView->view(); + AttributeTableModel* model = attributeView->model(); + if(view && model) + model->firstPage(); + } +} + +void DatabaseBrowser::onBtnClicked_previousPage() +{ + QWidget* widget = ui->tabWidget->currentWidget(); + AttributeView* attributeView = qobject_cast(widget); + if(attributeView) + { + QTableView* view = attributeView->view(); + AttributeTableModel* model = attributeView->model(); + if(view && model) + model->previousPage(); + } +} + +void DatabaseBrowser::onBtnClicked_nextPage() +{ + QWidget* widget = ui->tabWidget->currentWidget(); + AttributeView* attributeView = qobject_cast(widget); + if(attributeView) + { + QTableView* view = attributeView->view(); + AttributeTableModel* model = attributeView->model(); + if(view && model) + model->nextPage(); + } +} + +void DatabaseBrowser::onBtnClicked_lastPage() +{ + QWidget* widget = ui->tabWidget->currentWidget(); + AttributeView* attributeView = qobject_cast(widget); + if(attributeView) + { + QTableView* view = attributeView->view(); + AttributeTableModel* model = attributeView->model(); + if(view && model) + model->lastPage(); + } +} + +void DatabaseBrowser::onEditingFinished_page() +{ + QWidget* widget = ui->tabWidget->currentWidget(); + AttributeView* attributeView = qobject_cast(widget); + if(attributeView) + { + QTableView* view = attributeView->view(); + AttributeTableModel* model = attributeView->model(); + if(view && model) + { + QString strPage = ui->lineEditPage->text(); + model->setCurrentPage(strPage.toInt()); + } + + } +} + void DatabaseBrowser::onSyncDataStatus(bool hasModifiedData, const PaginationInfo& paginationInfo) { - ui->btnSave->setEnabled(!hasModifiedData); - ui->btnCancle->setEnabled(!hasModifiedData); + ui->btnSave->setEnabled(hasModifiedData); + ui->btnCancle->setEnabled(hasModifiedData); QString recordInfo = QString::fromWCharArray(L"共 %1 条记录").arg(paginationInfo.totalEntries); ui->recordInfo->setText(recordInfo); - ui->lineEdit->setText(QString::number(paginationInfo.currentPage)); - ui->lineEdit->setEnabled(true); + ui->lineEditPage->setText(QString::number(paginationInfo.currentPage)); + ui->lineEditPage->setEnabled(true); } void DatabaseBrowser::onShowMessage(MessageDialogType type,const QString& strTitle,const QString& strContent) diff --git a/source/dbStructureView.cpp b/source/dbStructureView.cpp index 12bd081..d77a236 100644 --- a/source/dbStructureView.cpp +++ b/source/dbStructureView.cpp @@ -4,6 +4,7 @@ #include "mainwindow.h" #include "dbManager.h" #include "customMenu.h" +#include "dataSyncManager.h" #include #include #include @@ -65,7 +66,10 @@ void DBStructureView::connectToDB(const QString& connName) { bool bResutl = m_dbManager->connect(connName); if(bResutl) + { model->refreshStructure_Connection(connName); + DataSyncManager::instance().registerPublicGroup(connName); + } /*QModelIndex index = model->getConnNodeIndex(connName); if(index.isValid()) @@ -86,6 +90,8 @@ void DBStructureView::disconnectToDB(const QString& connName) QModelIndex index = model->getConnNodeIndex(connName); if(index.isValid()) collapse(index); + + emit closeAllAttributeInfo(); } } diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp index 2aa4d61..52a94b4 100644 --- a/source/mainwindow.cpp +++ b/source/mainwindow.cpp @@ -83,6 +83,7 @@ void MainWindow::initialize() connect(m_pDBStrutureView, &DBStructureView::actionTrigger_addGroup, this, &MainWindow::onActionTrigger_addGroup); connect(m_pDBStrutureView, &DBStructureView::openAttributeInfo, this, &MainWindow::onSIG_openAttributeInfo); connect(m_pDBStrutureView, &DBStructureView::closeAttributeInfo, this, &MainWindow::onSIG_closeAttributeInfo); + connect(m_pDBStrutureView, &DBStructureView::closeAllAttributeInfo, this, &MainWindow::onSIG_closeAllAttributeInfo); ui->layoutDBStructure->addWidget(m_pDBStrutureView); m_pDBStrutureModel = new DBStructureModel(this); m_pDBStrutureModel->setMainWindow(this); @@ -297,3 +298,9 @@ void MainWindow::onSIG_closeAttributeInfo(ModelAttributeGroup& attributeGroup) if(m_dbBrowser) m_dbBrowser->closeTab_attribute(attributeGroup); } + +void MainWindow::onSIG_closeAllAttributeInfo() +{ + if(m_dbBrowser) + m_dbBrowser->closeAllTab_attribute(); +} diff --git a/source/messageDialog.cpp b/source/messageDialog.cpp index aed7812..f4a4091 100644 --- a/source/messageDialog.cpp +++ b/source/messageDialog.cpp @@ -50,12 +50,20 @@ void MessageDialog::setType(MessageDialogType type) } } -void MessageDialog::setMessage(MessageDialogType type,const QString& strTitle,const QString& strContent) +void MessageDialog::setMessage(MessageDialogType type, const QString& strTitle, const QString& strContent) { setType(type); ui->labelTitle->setText(strTitle); setWindowTitle(strTitle); - ui->labelContent->setText(strContent); + if(strContent.length() > 19) + { + //QString& strText = const_cast(strContent); + QString strText(strContent); + strText.insert(19, "\n"); //实现简单自动换行 + ui->labelContent->setText(strText); + } + else + ui->labelContent->setText(strContent); } void MessageDialog::onBtnClicked_confirm() diff --git a/source/modelInfoEditDialog.cpp b/source/modelInfoEditDialog.cpp index 644ad39..cf52098 100644 --- a/source/modelInfoEditDialog.cpp +++ b/source/modelInfoEditDialog.cpp @@ -55,7 +55,7 @@ void ModelInfoEditDialog::initialize() m_curModelID = -1; ui->btnAddGroup->setVisible(false); m_pMaskLayer = new MaskLayer(this); - //正则表达式,只能属于字母 + //正则表达式,只能输入字母 QRegularExpression regExp("[A-Za-z0-9]+"); QRegularExpressionValidator* validator = new QRegularExpressionValidator(regExp, this); ui->lineEdit_modelType->setValidator(validator); diff --git a/ui/attributeSelector.ui b/ui/attributeSelector.ui index 5f3392d..afd6571 100644 --- a/ui/attributeSelector.ui +++ b/ui/attributeSelector.ui @@ -56,20 +56,7 @@ border-radius:3px; } - - - - 20 - 10 - 61 - 16 - - - - 属性类别: - - - + 80 @@ -79,20 +66,10 @@ border-radius:3px; - - - - 280 - 8 - 113 - 20 - - - - 220 + 20 10 61 16 diff --git a/ui/dbBrowser.ui b/ui/dbBrowser.ui index c754208..dcd2463 100644 --- a/ui/dbBrowser.ui +++ b/ui/dbBrowser.ui @@ -374,7 +374,7 @@ QPushButton:pressed 16777215 - + true diff --git a/ui/messageDialog.ui b/ui/messageDialog.ui index e1fd5b0..5289aae 100644 --- a/ui/messageDialog.ui +++ b/ui/messageDialog.ui @@ -55,23 +55,24 @@ 50 - 23 + 15 261 - 20 + 41 font: 10pt; - 该类型已存在,是否读取数据载入详细数据 + 该属性组为公共组,检测到数据发生更新, +需要进行强制刷新 90 - 50 + 53 211 31 @@ -178,7 +179,7 @@ background-color:rgb(67,160,249); 10 - 15 + 18 36 36