diff --git a/include/attributeTableModel.h b/include/attributeTableModel.h index c713d1c..5cd725a 100644 --- a/include/attributeTableModel.h +++ b/include/attributeTableModel.h @@ -16,6 +16,7 @@ #include #include +#include "global.h" class AttributeTableModel : public QAbstractTableModel { @@ -30,10 +31,9 @@ public: Deleted }; - explicit AttributeTableModel(QObject* parent = nullptr + explicit AttributeTableModel(const ModelAttributeGroup& modelAttributeGroup + , QObject* parent = nullptr , const QString& connection = "" - , const QString& modelID = "" - , const QString& groupID = "" , const QString& tableName = "basic.attribute"); ~AttributeTableModel(); @@ -65,13 +65,10 @@ private: void updateTotalCount(); // 更新总记录数 QString m_connection; - QString m_modelID; - QString m_groupID; QString m_tableName; + ModelAttributeGroup m_modelAttributeGroup; - int m_pageSize; - int m_currentPage; - int m_totalCount; + PaginationInfo m_paginationInfo; QStringList m_visibleColumns; QList m_currentPageData; QHash m_modifiedRows; //key:global row number diff --git a/include/attributeView.h b/include/attributeView.h index 13c6e06..29cac6b 100644 --- a/include/attributeView.h +++ b/include/attributeView.h @@ -2,28 +2,31 @@ #define ATTRIBUTEVIEW_H #include +#include +#include "global.h" +#include "attributeTableModel.h" -class QTableView; -class AttributeTableModel; class QVBoxLayout; - class AttributeView : public QWidget { Q_OBJECT public: - AttributeView(QWidget *parent = nullptr - , const QString& connection = "" - , const QString& modelID = "" - , const QString& groupID = "" - , const QString& tableName = "basic.attribute"); + AttributeView(const ModelAttributeGroup& modelAttributeGroup + , QWidget* parent = nullptr + , const QString& connection = "" + , const QString& tableName = "basic.attribute"); ~AttributeView(); + QTableView* view() const { return m_tableView; } + AttributeTableModel* model() const { return m_attributeTableModel; } + + void active(); + private: QString m_connection; - QString m_modelID; - QString m_groupID; QString m_attributeTable; + ModelAttributeGroup m_modelAttributeGroup; QTableView* m_tableView; AttributeTableModel* m_attributeTableModel; diff --git a/include/dbBrowser.h b/include/dbBrowser.h index aa6ea78..105f371 100644 --- a/include/dbBrowser.h +++ b/include/dbBrowser.h @@ -22,7 +22,8 @@ public: void addTab_attribute(const QString&, ModelAttributeGroup&); private slots: - void onBtnClick_tabCloseBtn(int); + void onTabCloseRequested(int); + void onCurrentTabChanged(int); private: int tabIndex(const QString&); diff --git a/include/global.h b/include/global.h index 134ac67..74222f6 100644 --- a/include/global.h +++ b/include/global.h @@ -86,6 +86,14 @@ struct ModelAttributeGroup strGroupName(std::move(strGroupName)){} }; +struct PaginationInfo +{ + int totalEntries; //数据条目总数量 + int entriesPerPage; //每页条目数量 + int totalPages; //总页数 + int currentPage; //当前页数 +}; + class DatabaseException : public std::runtime_error { public: diff --git a/resource/images/icon_refresh3.png b/resource/images/icon_refresh3.png index 0034f33..fc8db13 100644 Binary files a/resource/images/icon_refresh3.png and b/resource/images/icon_refresh3.png differ diff --git a/resource/images/icon_refresh3_disable.png b/resource/images/icon_refresh3_disable.png index 4057796..ab91e7e 100644 Binary files a/resource/images/icon_refresh3_disable.png and b/resource/images/icon_refresh3_disable.png differ diff --git a/source/attributeTableModel.cpp b/source/attributeTableModel.cpp index edee2d1..5aaeb72 100644 --- a/source/attributeTableModel.cpp +++ b/source/attributeTableModel.cpp @@ -2,16 +2,15 @@ #include "logger.h" #include "sqlQueryExecutor.h" -AttributeTableModel::AttributeTableModel(QObject* parent, const QString& connection, const QString& modelID, const QString& groupID, const QString& tableName) +AttributeTableModel::AttributeTableModel(const ModelAttributeGroup& modelAttributeGroup, QObject* parent, const QString& connection, const QString& tableName) : QAbstractTableModel(parent) , m_connection(connection) - , m_modelID(modelID) - , m_groupID(groupID) , m_tableName(tableName) + , m_modelAttributeGroup(modelAttributeGroup) { - m_pageSize = 100; - m_currentPage = 1; - m_totalCount = 0; + m_paginationInfo.entriesPerPage = 100; + m_paginationInfo.currentPage = 1; + m_paginationInfo.totalEntries = 0; m_visibleColumns << "attribute" << "attribute_name" << "data_type_id" << "length_precision" << "default_value"; } @@ -26,7 +25,7 @@ QVariant AttributeTableModel::data(const QModelIndex& index, int role) const int row = index.row(); int col = index.column(); - int globalRow = (m_currentPage - 1) * m_pageSize + row; + int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row; if(index.column() == 0) //第一列显示行号 { @@ -81,7 +80,7 @@ bool AttributeTableModel::setData(const QModelIndex &index, const QVariant &valu return false; int row = index.row(); - int globalRow = (m_currentPage - 1) * m_pageSize + row; + int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row; int dataCol = index.column() - 1; //第一列显示了行号 //记录修改 RowData modifiedRow = m_currentPageData[row]; @@ -140,8 +139,8 @@ void AttributeTableModel::loadPageData() QString strSQL = QString("SELECT %1 FROM %2 LIMIT %3 OFFSET %4") .arg(m_visibleColumns.join(", ")) .arg(m_tableName) - .arg(m_pageSize) - .arg((m_currentPage - 1) * m_pageSize); + .arg(m_paginationInfo.entriesPerPage) + .arg((m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage); try { QSqlQuery query = SqlQueryExecutor::instance().executeSQL(m_connection, strSQL); @@ -154,7 +153,7 @@ void AttributeTableModel::loadPageData() } catch (const DatabaseException& e) { - LOG_ERROR("SQL", QString::fromWCharArray(L"获取属性信息失败。modelID:%1, groupID:%2").arg(m_modelID, m_groupID)); + LOG_ERROR("SQL", QString::fromWCharArray(L"获取属性信息失败。modelID:%1, groupID:%2").arg(m_modelAttributeGroup.modelID, m_modelAttributeGroup.groupID)); } endResetModel(); @@ -168,5 +167,5 @@ void AttributeTableModel::updateTotalCount() return; } - m_totalCount = SqlQueryExecutor::instance().getAttributeCount(m_connection, m_tableName); + m_paginationInfo.totalEntries = SqlQueryExecutor::instance().getAttributeCount(m_connection, m_tableName); } diff --git a/source/attributeView.cpp b/source/attributeView.cpp index 2c80d25..aeffe36 100644 --- a/source/attributeView.cpp +++ b/source/attributeView.cpp @@ -1,17 +1,14 @@ #include "attributeView.h" -#include "attributeTableModel.h" -#include #include -AttributeView::AttributeView(QWidget* parent, const QString& connection, const QString& modelID, const QString& groupID, const QString& tableName) +AttributeView::AttributeView(const ModelAttributeGroup& modelAttributeGroup, QWidget* parent, const QString& connection, const QString& tableName) : QWidget(parent) , m_connection(connection) - , m_modelID(modelID) - , m_groupID(groupID) , m_attributeTable(tableName) + , m_modelAttributeGroup(modelAttributeGroup) { m_tableView = new QTableView(this); - m_attributeTableModel = new AttributeTableModel(this, m_connection, m_modelID, m_groupID, m_attributeTable); + m_attributeTableModel = new AttributeTableModel(m_modelAttributeGroup, this, m_connection, m_attributeTable); m_tableView->setModel(m_attributeTableModel); m_vLayout = new QVBoxLayout(this); @@ -23,3 +20,8 @@ AttributeView::AttributeView(QWidget* parent, const QString& connection, const Q AttributeView::~AttributeView() {} + +void AttributeView::active() +{ + +} diff --git a/source/dbBrowser.cpp b/source/dbBrowser.cpp index 01f4909..e1685de 100644 --- a/source/dbBrowser.cpp +++ b/source/dbBrowser.cpp @@ -9,7 +9,8 @@ DatabaseBrowser::DatabaseBrowser(QWidget *parent) { ui->setupUi(this); - connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &DatabaseBrowser::onBtnClick_tabCloseBtn); + connect(ui->tabWidget, &QTabWidget::tabCloseRequested, this, &DatabaseBrowser::onTabCloseRequested); + connect(ui->tabWidget, &QTabWidget::currentChanged, this, &DatabaseBrowser::onCurrentTabChanged); } DatabaseBrowser::~DatabaseBrowser() @@ -38,7 +39,7 @@ void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttribute return; } - AttributeView* view = new AttributeView(ui->tabWidget, connection, QString::number(attributeGroup.modelID), QString::number(attributeGroup.groupID)); + AttributeView* view = new AttributeView(attributeGroup, ui->tabWidget, connection); index = ui->tabWidget->addTab(view, QIcon(":/img/images/icon_hierarchy.png"), tabText); //添加自定义按钮 /*QPushButton* closeBtn = new QPushButton(""); @@ -63,7 +64,7 @@ void DatabaseBrowser::addTab_attribute(const QString& connection, ModelAttribute ui->tabWidget->setCurrentIndex(index); } -void DatabaseBrowser::onBtnClick_tabCloseBtn(int index) +void DatabaseBrowser::onTabCloseRequested(int index) { /*QObject* sender = QObject::sender(); QPushButton* button = qobject_cast(sender); @@ -75,3 +76,20 @@ void DatabaseBrowser::onBtnClick_tabCloseBtn(int index) ui->tabWidget->removeTab(index); delete widget; } + +void DatabaseBrowser::onCurrentTabChanged(int index) +{ + if(index == -1) //最后一个tab关闭时会触发 + { + ui->recordInfo->clear(); + return; + } + + QString recordInfo = QString::fromWCharArray(L"共 * 条记录"); + QWidget* widget = ui->tabWidget->widget(index); + AttributeView* attributeView = qobject_cast(widget); + if(attributeView) + { + attributeView->active(); + } +} diff --git a/ui/dbBrowser.ui b/ui/dbBrowser.ui index 958bb2c..1209d20 100644 --- a/ui/dbBrowser.ui +++ b/ui/dbBrowser.ui @@ -31,6 +31,9 @@ + + true + QTabBar::close-button { border-image: url(:/img/images/btn_close_default.png); @@ -278,7 +281,8 @@ QPushButton:pressed - :/img/images/icon_close.png:/img/images/icon_close.png + :/img/images/icon_close.png + :/img/images/icon_close_disable.png:/img/images/icon_close.png @@ -322,7 +326,8 @@ QPushButton:pressed - :/img/images/icon_refresh3.png:/img/images/icon_refresh3.png + :/img/images/icon_refresh3.png + :/img/images/icon_refresh3_disable.png:/img/images/icon_refresh3.png @@ -340,7 +345,7 @@ QPushButton:pressed - 827 + 727 20 @@ -350,13 +355,13 @@ QPushButton:pressed - 200 + 300 0 - 200 + 300 16777215 @@ -366,7 +371,7 @@ QPushButton:pressed - 108 + 210 5 41 21 @@ -401,7 +406,7 @@ background-color: rgb(255, 255, 255); - 68 + 170 5 21 21 @@ -445,7 +450,7 @@ background-color: rgb(255, 255, 255); - 170 + 272 5 21 21 @@ -489,7 +494,7 @@ background-color: rgb(255, 255, 255); - 88 + 190 5 21 21 @@ -533,7 +538,7 @@ background-color: rgb(255, 255, 255); - 150 + 252 5 21 21 @@ -571,6 +576,22 @@ background-color: rgb(255, 255, 255); + + + + 12 + 5 + 151 + 21 + + + + 共 10 条记录 + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + +