修改、完善属性编辑和选择窗口中的页码相关执行逻辑

This commit is contained in:
duanshengchao 2025-05-19 11:04:46 +08:00
parent 2b26521fe4
commit ce2e12962e
6 changed files with 100 additions and 7 deletions

View File

@ -34,6 +34,11 @@ private slots:
void onBtnClicked_refreshData(); void onBtnClicked_refreshData();
void onBtnClicked_submitSelect(); void onBtnClicked_submitSelect();
void onBtnClicked_cancleSelect(); void onBtnClicked_cancleSelect();
void onBtnClicked_firstPage();
void onBtnClicked_previousPage();
void onBtnClicked_nextPage();
void onBtnClicked_lastPage();
void onEditingFinished_page();
void onEditingFinished_attributeType(); void onEditingFinished_attributeType();
void onComboBoxTextChanged_model(const QString&); void onComboBoxTextChanged_model(const QString&);
void onComboBoxTextChanged_group(const QString&); void onComboBoxTextChanged_group(const QString&);

View File

@ -26,6 +26,9 @@ public:
void closeTab_attribute(ModelAttributeGroup&); void closeTab_attribute(ModelAttributeGroup&);
void closeAllTab_attribute(); void closeAllTab_attribute();
protected:
bool eventFilter(QObject*, QEvent*) override;
private slots: private slots:
void onTabCloseRequested(int); void onTabCloseRequested(int);
void onCurrentTabChanged(int); void onCurrentTabChanged(int);

View File

@ -27,6 +27,11 @@ AttributeSelector::AttributeSelector(const QString& connection, QWidget *parent)
ui->lineEdit_attributeType->setValidator(validator); ui->lineEdit_attributeType->setValidator(validator);
ui->lineEdit_attributeType->installEventFilter(this); ui->lineEdit_attributeType->installEventFilter(this);
regExp.setPattern("[0-9]+");
validator = new QRegularExpressionValidator(regExp, this);
ui->lineEditPage->setValidator(validator);
ui->lineEditPage->installEventFilter(this);
//隐藏一些功能按钮 //隐藏一些功能按钮
ui->btnAdd->setVisible(false); ui->btnAdd->setVisible(false);
ui->btnRemove->setVisible(false); ui->btnRemove->setVisible(false);
@ -47,7 +52,12 @@ AttributeSelector::AttributeSelector(const QString& connection, QWidget *parent)
connect(ui->btnRefresh, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_refreshData); connect(ui->btnRefresh, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_refreshData);
connect(ui->btnSave, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_submitSelect); connect(ui->btnSave, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_submitSelect);
connect(ui->btnCancle, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_cancleSelect); connect(ui->btnCancle, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_cancleSelect);
connect(ui->btnFirstPage, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_firstPage);
connect(ui->btnPreviousPage, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_previousPage);
connect(ui->btnLastPage, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_lastPage);
connect(ui->btnNextPage, &QPushButton::clicked, this, &AttributeSelector::onBtnClicked_nextPage);
//editingFinished在输入的内容为空时不会触发所以改为在eventFilter中实现 //editingFinished在输入的内容为空时不会触发所以改为在eventFilter中实现
//connect(ui->lineEditPage, &QLineEdit::editingFinished, this, &AttributeSelector::onEditingFinished_page);
//connect(ui->lineEdit_attributeType, &QLineEdit::editingFinished, this, &AttributeSelector::onEditingFinished_attributeType); //connect(ui->lineEdit_attributeType, &QLineEdit::editingFinished, this, &AttributeSelector::onEditingFinished_attributeType);
iniData(); iniData();
@ -152,6 +162,19 @@ bool AttributeSelector::eventFilter(QObject* obj, QEvent* event)
else if(event->type() == QEvent::FocusOut) else if(event->type() == QEvent::FocusOut)
onEditingFinished_attributeType(); onEditingFinished_attributeType();
} }
else if(obj == ui->lineEditPage)
{
if(event->type() == QEvent::KeyPress)
{
QKeyEvent* pKeyEvent = static_cast<QKeyEvent*>(event);
if (pKeyEvent->key() == Qt::Key_Enter || pKeyEvent->key() == Qt::Key_Return)
{
onEditingFinished_page();
}
}
else if(event->type() == QEvent::FocusOut)
onEditingFinished_page();
}
return QDialog::eventFilter(obj, event); return QDialog::eventFilter(obj, event);
} }
@ -225,6 +248,46 @@ void AttributeSelector::onBtnClicked_cancleSelect()
close(); close();
} }
void AttributeSelector::onBtnClicked_firstPage()
{
if(m_attributeView->model())
m_attributeView->model()->firstPage();
}
void AttributeSelector::onBtnClicked_previousPage()
{
if(m_attributeView->model())
m_attributeView->model()->previousPage();
}
void AttributeSelector::onBtnClicked_nextPage()
{
if(m_attributeView->model())
m_attributeView->model()->nextPage();
}
void AttributeSelector::onBtnClicked_lastPage()
{
if(m_attributeView->model())
m_attributeView->model()->lastPage();
}
void AttributeSelector::onEditingFinished_page()
{
if(m_attributeView->model())
{
QString strPage = ui->lineEditPage->text();
if(strPage.isEmpty())
ui->lineEditPage->setText(QString::number(m_attributeView->model()->currentPage()));
else
{
bool result = m_attributeView->model()->setCurrentPage(strPage.toInt());
if(!result)
ui->lineEditPage->setText(QString::number(m_attributeView->model()->currentPage()));
}
}
}
void AttributeSelector::onEditingFinished_attributeType() void AttributeSelector::onEditingFinished_attributeType()
{ {
if(m_fliterChars_type != ui->lineEdit_attributeType->text()) if(m_fliterChars_type != ui->lineEdit_attributeType->text())
@ -238,8 +301,8 @@ void AttributeSelector::onSyncDataStatus(bool hasModifiedData, const PaginationI
QString recordInfo = QString::fromWCharArray(L"共 %1 条记录").arg(paginationInfo.totalEntries); QString recordInfo = QString::fromWCharArray(L"共 %1 条记录").arg(paginationInfo.totalEntries);
ui->recordInfo->setText(recordInfo); ui->recordInfo->setText(recordInfo);
ui->lineEdit->setText(QString::number(paginationInfo.currentPage)); ui->lineEditPage->setText(QString::number(paginationInfo.currentPage));
ui->lineEdit->setEnabled(true); ui->lineEditPage->setEnabled(true);
} }
void AttributeSelector::onShowMessage(MessageDialogType type,const QString& strTitle,const QString& strContent) void AttributeSelector::onShowMessage(MessageDialogType type,const QString& strTitle,const QString& strContent)

View File

@ -466,14 +466,16 @@ void AttributeTableModel::previousPage()
if(m_paginationInfo.currentPage == 1) if(m_paginationInfo.currentPage == 1)
return; return;
setCurrentPage(m_paginationInfo.currentPage--); int page = m_paginationInfo.currentPage;
setCurrentPage(--page);
} }
void AttributeTableModel::nextPage() void AttributeTableModel::nextPage()
{ {
if(m_paginationInfo.currentPage == totalPages()) if(m_paginationInfo.currentPage == totalPages())
return; return;
setCurrentPage(m_paginationInfo.currentPage++); int page = m_paginationInfo.currentPage;
setCurrentPage(++page);
} }
void AttributeTableModel::firstPage() void AttributeTableModel::firstPage()
{ {

View File

@ -4,6 +4,7 @@
#include "attributeView.h" #include "attributeView.h"
#include <QTabBar> #include <QTabBar>
#include <QRegularExpressionValidator> #include <QRegularExpressionValidator>
#include <QKeyEvent>
DatabaseBrowser::DatabaseBrowser(QWidget *parent) DatabaseBrowser::DatabaseBrowser(QWidget *parent)
: QWidget(parent) : QWidget(parent)
@ -17,6 +18,7 @@ DatabaseBrowser::DatabaseBrowser(QWidget *parent)
QRegularExpression regExp("[0-9]+"); QRegularExpression regExp("[0-9]+");
QRegularExpressionValidator* validator = new QRegularExpressionValidator(regExp, this); QRegularExpressionValidator* validator = new QRegularExpressionValidator(regExp, this);
ui->lineEditPage->setValidator(validator); ui->lineEditPage->setValidator(validator);
ui->lineEditPage->installEventFilter(this);
connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &DatabaseBrowser::onTabCloseRequested); connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &DatabaseBrowser::onTabCloseRequested);
connect(ui->tabWidget, &QTabWidget::currentChanged, this, &DatabaseBrowser::onCurrentTabChanged); connect(ui->tabWidget, &QTabWidget::currentChanged, this, &DatabaseBrowser::onCurrentTabChanged);
@ -33,7 +35,8 @@ DatabaseBrowser::DatabaseBrowser(QWidget *parent)
connect(ui->btnNextPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_nextPage); connect(ui->btnNextPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_nextPage);
connect(ui->btnLastPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_lastPage); connect(ui->btnLastPage, &QPushButton::clicked, this, &DatabaseBrowser::onBtnClicked_lastPage);
connect(ui->lineEditPage, &QLineEdit::returnPressed, this, &DatabaseBrowser::onEditingFinished_page); //editingFinished在输入的内容为空时不会触发所以改为在eventFilter中实现
connect(ui->lineEditPage, &QLineEdit::editingFinished, this, &DatabaseBrowser::onEditingFinished_page);
} }
DatabaseBrowser::~DatabaseBrowser() DatabaseBrowser::~DatabaseBrowser()
@ -41,6 +44,24 @@ DatabaseBrowser::~DatabaseBrowser()
delete ui; delete ui;
} }
bool DatabaseBrowser::eventFilter(QObject* obj, QEvent* event)
{
if(obj == ui->lineEditPage)
{
if(event->type() == QEvent::KeyPress)
{
QKeyEvent* pKeyEvent = static_cast<QKeyEvent*>(event);
if (pKeyEvent->key() == Qt::Key_Enter || pKeyEvent->key() == Qt::Key_Return)
{
onEditingFinished_page();
}
}
else if(event->type() == QEvent::FocusOut)
onEditingFinished_page();
}
return QWidget::eventFilter(obj, event);
}
void DatabaseBrowser::setMainWindow(MainWindow* window) void DatabaseBrowser::setMainWindow(MainWindow* window)
{ {
m_pMainWindow = window; m_pMainWindow = window;
@ -353,7 +374,6 @@ void DatabaseBrowser::onEditingFinished_page()
if(!result) if(!result)
ui->lineEditPage->setText(QString::number(model->currentPage())); ui->lineEditPage->setText(QString::number(model->currentPage()));
} }
} }
} }

View File

@ -515,7 +515,7 @@ QPushButton:pressed
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<widget class="QLineEdit" name="lineEdit"> <widget class="QLineEdit" name="lineEditPage">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
</property> </property>