完成查看属性数据时和相关UI元素之间的数据状态同步

This commit is contained in:
duanshengchao 2025-03-25 20:53:15 +08:00
parent ed76612436
commit 9913bfda86
6 changed files with 38 additions and 4 deletions

View File

@ -54,6 +54,11 @@ public:
//展示列控制
void setVisibleColumns(const QStringList& columns);
void triggerSyncSignal();
signals:
void syncDataStatus(bool, const PaginationInfo&);
private:
struct RowData
{

View File

@ -24,6 +24,7 @@ public:
private slots:
void onTabCloseRequested(int);
void onCurrentTabChanged(int);
void onSyncDataStatus(bool, const PaginationInfo&);
private:
int tabIndex(const QString&);

View File

@ -169,3 +169,8 @@ void AttributeTableModel::updateTotalCount()
m_paginationInfo.totalEntries = SqlQueryExecutor::instance().getAttributeCount(m_connection, m_tableName);
}
void AttributeTableModel::triggerSyncSignal()
{
emit syncDataStatus(m_modifiedRows.isEmpty(), m_paginationInfo);
}

View File

@ -23,5 +23,5 @@ AttributeView::~AttributeView()
void AttributeView::active()
{
m_attributeTableModel->triggerSyncSignal();
}

View File

@ -40,6 +40,7 @@ void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttribute
}
AttributeView* view = new AttributeView(attributeGroup, ui->tabWidget, connection);
connect(view->model(), &AttributeTableModel::syncDataStatus, this, &DatabaseBrowser::onSyncDataStatus);
index = ui->tabWidget->addTab(view, QIcon(":/img/images/icon_hierarchy.png"), tabText);
//添加自定义按钮
/*QPushButton* closeBtn = new QPushButton("");
@ -81,15 +82,37 @@ void DatabaseBrowser::onCurrentTabChanged(int index)
{
if(index == -1) //最后一个tab关闭时会触发
{
ui->btnAdd->setEnabled(false);
ui->btnRemove->setEnabled(false);
ui->btnCancle->setEnabled(false);
ui->btnRefresh->setEnabled(false);
ui->btnSave->setEnabled(false);
ui->btnCancle->setEnabled(false);
ui->recordInfo->clear();
ui->lineEdit->setEnabled(false);
ui->lineEdit->setText("1");
return;
}
QString recordInfo = QString::fromWCharArray(L"共 * 条记录");
QWidget* widget = ui->tabWidget->widget(index);
AttributeView* attributeView = qobject_cast<AttributeView*>(widget);
if(attributeView)
{
ui->btnAdd->setEnabled(true);
ui->btnRemove->setEnabled(true);
ui->btnCancle->setEnabled(true);
ui->btnRefresh->setEnabled(true);
attributeView->active();
}
}
void DatabaseBrowser::onSyncDataStatus(bool hasModifiedData, const PaginationInfo& paginationInfo)
{
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);
}

View File

@ -367,7 +367,7 @@ QPushButton:pressed
</property>
<widget class="QLineEdit" name="lineEdit">
<property name="enabled">
<bool>false</bool>
<bool>true</bool>
</property>
<property name="geometry">
<rect>
@ -586,7 +586,7 @@ background-color: rgb(255, 255, 255);</string>
</rect>
</property>
<property name="text">
<string>共 10 条记录</string>
<string/>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter</set>