如何免费做网站网页,温州网站推广外包,开发公司经理述职报告,小程序怎么删除掉介绍
qt做的分页控件
如何使用
创建
Pagination必须基于一个QWidget创建#xff0c;否则会引发错误。
Pagination* pa new Pagination(QWidget*);设置总页数
Pagination需要设置一个总的页数#xff0c;来初始化页码。
pa-SetTotalItem(count);设置可选的每页数量…介绍
qt做的分页控件
如何使用
创建
Pagination必须基于一个QWidget创建否则会引发错误。
Pagination* pa new Pagination(QWidget*);设置总页数
Pagination需要设置一个总的页数来初始化页码。
pa-SetTotalItem(count);设置可选的每页数量
可以通过传给Pagination一个整形数组来设置每页显示的条目数。
int args[4] {1, 100, 200, 300};
pa-SetItemPerPage(args, 4);刷新配置参数
当上面参数设置完成后需要调用一次Refresh来刷新配置。
pa-Refresh();获取当前页数的变化
当Pagination当前的页码发生变化时会产生一个PageChanged信号原型如下
void PageChanged(int nPage);其中nPage代表要跳转的页数。
获取每页条目数的变化
当Pagination的每页数量发生变化时会产生一个NumberPerPageChanged信号原型如下
void NumberPerPageChanged(int nCount);其中nCount表示最新的每页条目数量。 #include pagination.h
#include QPainter
#include QStyleOption
#include QListView
#include QKeyEvent
//q:303103757 and v:qt5_qt6
Pagination::Pagination(QWidget *parent) :QWidget(parent),m_nCurrentPage(MINIMUM_PAGE),m_nMaxPage(MINIMUM_PAGE),m_nDisplayPage(0)
{setMinimumSize(800, 50);Init();
}Pagination::~Pagination()
{if(m_pHPageLayout){delete m_pHPageLayout;m_pHPageLayout nullptr;}
}void Pagination::SetTotalItem(int nTotal)
{m_pTotalItem-SetTotal(nTotal);int EachPage m_pItemEachPage-GetCurrent();if(EachPage 0){m_nMaxPage nTotal / EachPage;if(nTotal % EachPage 0) m_nMaxPage;if(m_nMaxPage 0) m_nMaxPage MINIMUM_PAGE;// 如果m_nMaxPage大于MAX_BUTTON_COUNT则只构建7个按钮头、尾中间5个if(m_nMaxPage MAX_BUTTON_COUNT) m_nDisplayPage MAX_BUTTON_COUNT 1;else m_nDisplayPage m_nMaxPage;}
}void Pagination::SetItemPerPage(int *args, int size)
{m_pItemEachPage-SetItemEachPage(args, size);int EachPage m_pItemEachPage-GetCurrent();if(EachPage 0){int nTotal m_pTotalItem-GetTotal();m_nMaxPage nTotal / EachPage;if(nTotal % EachPage 0) m_nMaxPage;if(m_nMaxPage 0) m_nMaxPage MINIMUM_PAGE;// 如果m_nMaxPage小于MAX_BUTTON_COUNT则不变。// 如果m_nMaxPage大于MAX_BUTTON_COUNT则只构建7个按钮头、尾中间5个if(m_nMaxPage MAX_BUTTON_COUNT) m_nDisplayPage MAX_BUTTON_COUNT 1;else m_nDisplayPage m_nMaxPage;}
}void Pagination::Refresh()
{Reload();
}void Pagination::ChangeView(int currentPage)
{/***************************************************************** 改变页数的几种情形* 1、显示页数m_nDisplay小于等于MAX_BUTTON_COUNT则该函数不做任何处理。* 2、显示页数m_nDisplay大于MAX_BUTTON_COUNT开始处理* (1).初始(currentPage MAX_BUTTON_COUNT).* ① currentPage ! 5, [1] 2 3 4 5 6 ... max* ② currentPage 5, 此时应当放到(2)去处理因为此时已经形成 1 ... 3 4 [5]的情况* (2).(currentPage MAX_BUTTON_COUNT)。* ① 两个省略号中间(currentPage max - 3)1 ... 3 4 [5] 6 7 ... max* ② 后省略号后面(currentPage max - 3) 1 ... 4 5 [6] 7 8 max* ***************************************************************/if(currentPage MINIMUM_PAGE)m_pBtnLeft-setDisabled(true); // 当前第一页禁用左按钮elsem_pBtnLeft-setDisabled(false); // 开启右按钮if(currentPage m_nMaxPage)m_pBtnRight-setDisabled(true); // 最后一页禁用右按钮elsem_pBtnRight-setDisabled(false); // 开启左按钮if(m_nDisplayPage MAX_BUTTON_COUNT)return; // 1情况if(currentPage MAX_BUTTON_COUNT currentPage ! MAX_BUTTON_COUNT - 1) // 2.1情况{// 页面情况 1 2 3 4 5 6 ... maxfor(unsigned long long i 0; i m_vecPageBtn.size(); i){QPushButton* btn m_vecPageBtn[i];if(btn-isHidden()) btn-show();if(i m_vecPageBtn.size() - 1)btn-setText(QString::number(m_nMaxPage));elsebtn-setText(QString::number(i 1));btn-adjustSize();if(btn-text().toInt() currentPage)btn-setChecked(true);elsebtn-setChecked(false);}// 显示后省略号屏蔽前省略if(!m_pBtnOmitFront-isHidden())m_pBtnOmitFront-hide();if(m_pBtnOmitBack-isHidden())m_pBtnOmitBack-show();}else{if(currentPage m_nMaxPage - 3) // 2.2.1情况{// 页面情况 currentPage - 2, currentPage - 1, [currentPage], currentPage 1, currentPage 2int value - 2;for(unsigned long long i 1; i 5; i){QPushButton* btn m_vecPageBtn[i];btn-setText(QString::number(currentPage value));btn-adjustSize();if(btn-text().toInt() currentPage) btn-setChecked(true);else btn-setChecked(false);}// 开启两边省略号if(m_pBtnOmitFront-isHidden()) m_pBtnOmitFront-show();if(m_pBtnOmitBack-isHidden()) m_pBtnOmitBack-show();}else // 2.2.2情况{// 页面情况 1 ... max - 5, max - 4, [max - 3], max - 2, max - 1, max// 除了第一个不变其它全变for(unsigned long long i 1; i m_vecPageBtn.size(); i){QPushButton* btn m_vecPageBtn[i];btn-setText(QString::number(m_nMaxPage - MAX_BUTTON_COUNT i));btn-adjustSize();if(btn-text().toInt() currentPage) btn-setChecked(true);else btn-setChecked(false);}// 显示前省略号屏蔽后省略if(m_pBtnOmitFront-isHidden()) m_pBtnOmitFront-show();if(!m_pBtnOmitBack-isHidden()) m_pBtnOmitBack-hide();}}
}QPushButton *Pagination::GetPageItem(int nPos)
{return dynamic_castQPushButton*(m_pHPageLayout-itemAt(nPos)-widget());
}void Pagination::Init()
{setObjectName(pagination);setStyleSheet(QStringLiteral(QWidget#pagination{background-color:transparent;}));m_pHMainLayout new QHBoxLayout(this);m_pHPageLayout new QHBoxLayout;m_pTotalItem new TotalItem(this);m_pItemEachPage new EachPageItem(this);m_pGotoItem new GotoPageItem(this);m_pBtnLeft new QPushButton(, this);m_pBtnRight new QPushButton(, this);m_pBtnOmitFront new QPushButton(this);m_pBtnOmitBack new QPushButton(this);m_vecPageBtn.reserve(10);m_pBtnOmitFront-setStyleSheet(QStringLiteral(QPushButton{border:none;background-color:transparent;background:url(:/pagination/skin/ellipsis.png) no-repeat;background-position:center;}QPushButton:hover{background:url(:/pagination/skin/FB.png) no-repeat;background-position:center;}));m_pBtnOmitBack-setStyleSheet(QStringLiteral(QPushButton{border:none;background-color:transparent;background:url(:/pagination/skin/ellipsis.png) no-repeat;background-position:center;}QPushButton:hover{background:url(:/pagination/skin/FF.png) no-repeat;background-position:center;}));m_nCurrentPage 1;int args[4] { 100, 200, 300, 400 };SetItemPerPage(args, sizeof (args) / sizeof (int));m_pBtnOmitFront-hide();m_pBtnOmitBack-hide();int btnWidth 0;for(int i 0; i m_nDisplayPage; i){if(i 1) m_pHPageLayout-addWidget(m_pBtnOmitFront);if(i m_nMaxPage - 2 i ! 0) m_pHPageLayout-addWidget(m_pBtnOmitBack);QPushButton* btn new QPushButton(QString::number(i 1), this);btn-setCheckable(true);m_pHPageLayout-addWidget(btn);m_vecPageBtn.emplace_back(btn);connect(btn, QPushButton::clicked, this, Pagination::btn_page_clicked);btnWidth btn-width();}for(auto x : findChildrenQPushButton*()){x-setMinimumSize(32, 32);x-setCursor(QCursor(Qt::PointingHandCursor));if(x ! m_pBtnOmitFront x ! m_pBtnOmitBack){x-setStyleSheet(QStringLiteral(QPushButton{font-size:15px;font-weight:bold;border:none;background-color:transparent;color:black;}QPushButton:hover{color:#409EFF;}QPushButton:pressed{color:#409EFF;}QPushButton:checked{color:#409EFF;}QPushButton:disabled{color:#BCBEC2;}));}}ChangeView(m_nCurrentPage);m_pHMainLayout-addWidget(m_pTotalItem);m_pHMainLayout-addWidget(m_pItemEachPage, Qt::AlignCenter);m_pHMainLayout-addWidget(m_pBtnLeft);m_pHMainLayout-addLayout(m_pHPageLayout);m_pHMainLayout-addWidget(m_pBtnRight);m_pHMainLayout-addWidget(m_pGotoItem);m_pHMainLayout-addStretch();// 上一页connect(m_pBtnLeft, QPushButton::clicked, this, [this](){if(m_nCurrentPage - 1 0) m_nCurrentPage 1;else --m_nCurrentPage;ChangeView(m_nCurrentPage);emit PageChanged(m_nCurrentPage);});// 下一页connect(m_pBtnRight, QPushButton::clicked, this, [](){if(m_nCurrentPage 1 m_nMaxPage) m_nCurrentPage m_nMaxPage;else m_nCurrentPage;ChangeView(m_nCurrentPage);emit PageChanged(m_nCurrentPage);});// 左省略号当作快退即退m_nDisplay页connect(m_pBtnOmitFront, QPushButton::clicked, this, [](){if(m_nCurrentPage - PAGE_STEP MINIMUM_PAGE) m_nCurrentPage MINIMUM_PAGE;else m_nCurrentPage - PAGE_STEP;ChangeView(m_nCurrentPage);emit PageChanged(m_nCurrentPage);});// 右省略号当作快进即进m_nDisplay页connect(m_pBtnOmitBack, QPushButton::clicked, this, [](){if(m_nCurrentPage PAGE_STEP m_nMaxPage) m_nCurrentPage m_nMaxPage;else m_nCurrentPage PAGE_STEP;ChangeView(m_nCurrentPage);emit PageChanged(m_nCurrentPage);});// 前往第N页connect(m_pGotoItem, GotoPageItem::GotoPage, this, [](int nPage){if(nPage m_nMaxPage) nPage m_nMaxPage;if(nPage MINIMUM_PAGE) nPage MINIMUM_PAGE;if(nPage 1 m_nMaxPage) m_nCurrentPage m_nMaxPage;else m_nCurrentPage nPage;ChangeView(m_nCurrentPage);emit PageChanged(m_nCurrentPage);});// 每页条码变化connect(m_pItemEachPage, EachPageItem::EachPageItemChanged, this, [](int nCount){int EachPage m_pItemEachPage-GetCurrent();if(EachPage 0){int nTotal m_pTotalItem-GetTotal();m_nMaxPage nTotal / EachPage;if(nTotal % EachPage 0)m_nMaxPage;if(m_nMaxPage 0)m_nMaxPage MINIMUM_PAGE;// 如果m_nMaxPage小于MAX_BUTTON_COUNT则不变。// 如果m_nMaxPage大于MAX_BUTTON_COUNT则只构建7个按钮头、尾中间5个if(m_nMaxPage MAX_BUTTON_COUNT)m_nDisplayPage MAX_BUTTON_COUNT 1;elsem_nDisplayPage m_nMaxPage;}Reload();emit NumberPerPageChanged(nCount);});
}void Pagination::paintEvent(QPaintEvent *event)
{QStyleOption opt;opt.init(this);QPainter p(this);style()-drawPrimitive(QStyle::PE_Widget, opt, p, this);QWidget::paintEvent(event);
}QPushButton *Pagination::FindPage(int nIndex) const
{for(int i 0; i m_pHPageLayout-count(); i){QLayoutItem* item m_pHPageLayout-itemAt(i);if(item){QPushButton* btn qobject_castQPushButton*(item-widget());if(btn btn-text().compare(QString::number(nIndex)) 0){return btn;}}}return nullptr;
}void Pagination::ClearPage()
{int sz m_pHPageLayout-count();for(int i 0; i sz; i){QLayoutItem* item m_pHPageLayout-takeAt(0);QWidget* tmp item-widget();m_pHPageLayout-removeWidget(tmp);delete tmp;tmp nullptr;delete item;item nullptr;}m_vecPageBtn.clear();
}void Pagination::Reload()
{ClearPage();int lastPage m_nCurrentPage;m_nCurrentPage 1;m_pBtnOmitFront new QPushButton(this);m_pBtnOmitBack new QPushButton(this);m_pBtnOmitFront-setStyleSheet(QStringLiteral(QPushButton{border:none;background-color:transparent;background:url(:/pagination/skin/ellipsis.png) no-repeat;background-position:center;}QPushButton:hover{background:url(:/pagination/skin/FB.png) no-repeat;background-position:center;}));m_pBtnOmitBack-setStyleSheet(QStringLiteral(QPushButton{border:none;background-color:transparent;background:url(:/pagination/skin/ellipsis.png) no-repeat;background-position:center;}QPushButton:hover{background:url(:/pagination/skin/FF.png) no-repeat;background-position:center;}));m_pBtnOmitFront-setCursor(QCursor(Qt::PointingHandCursor));m_pBtnOmitBack-setCursor(QCursor(Qt::PointingHandCursor));m_pBtnOmitFront-hide();m_pBtnOmitBack-hide();for(int i 0; i m_nDisplayPage; i){QPushButton* btn new QPushButton(QString::number(i 1), this);btn-setCheckable(true);m_pHPageLayout-addWidget(btn);btn-setMinimumSize(32, 32);btn-setCursor(QCursor(Qt::PointingHandCursor));btn-setStyleSheet(QStringLiteral(QPushButton{font-size:15px;font-weight:bold;border:none;background-color:transparent;color:black;}QPushButton:hover{color:#409EFF;}QPushButton:pressed{color:#409EFF;}QPushButton:checked{color:#409EFF;}QPushButton:disabled{color:#BCBEC2;}));connect(btn, QPushButton::clicked, this, Pagination::btn_page_clicked);m_vecPageBtn.emplace_back(btn);}m_pHPageLayout-insertWidget(1, m_pBtnOmitFront);m_pHPageLayout-insertWidget(m_pHPageLayout-count() - 1, m_pBtnOmitBack);// 初始化一次界面ChangeView(m_nCurrentPage);if(lastPage m_nMaxPage) // 上次停留的页数大于现在的最大页数m_nCurrentPage m_nMaxPage; // 直接变成当前最大页数elsem_nCurrentPage lastPage; // 否则还是保持当前页数ChangeView(m_nCurrentPage); // 再次刷新下当前界面// 左省略号当作快退即退PAGE_STEP页connect(m_pBtnOmitFront, QPushButton::clicked, this, [](){if(m_nCurrentPage - PAGE_STEP MINIMUM_PAGE) m_nCurrentPage MINIMUM_PAGE;else m_nCurrentPage - PAGE_STEP;ChangeView(m_nCurrentPage);emit PageChanged(m_nCurrentPage);});// 右省略号当作快进即进PAGE_STEP页connect(m_pBtnOmitBack, QPushButton::clicked, this, [](){if(m_nCurrentPage PAGE_STEP m_nMaxPage) m_nCurrentPage m_nMaxPage;else m_nCurrentPage PAGE_STEP;ChangeView(m_nCurrentPage);emit PageChanged(m_nCurrentPage);});
}void Pagination::btn_page_clicked()
{QPushButton* btn qobject_castQPushButton*(sender());if(btn btn ! m_pBtnOmitFront btn ! m_pBtnOmitBack){QString str btn-text();int nIndex str.toInt(); // 要跳转的页数QPushButton* page FindPage(m_nCurrentPage); // 找到当前页数按钮if(page) page-setChecked(false); // 取消选中QPushButton* nPage FindPage(nIndex);if(nPage) nPage-setChecked(true);m_nCurrentPage nIndex;ChangeView(m_nCurrentPage);emit PageChanged(nIndex);}
}//TotalItem/TotalItem::TotalItem(QWidget *parent) : QWidget(parent), m_nTotal(0)
{m_pLabel new QLabel(共 0 条, this);setObjectName(total_item);setStyleSheet(QStringLiteral(QWidget#total_item{background-color:transparent;}));m_pLabel-setStyleSheet(QLabel{font-family:Microsoft Yahei;font-size:14px;});m_pLabel-adjustSize();setMinimumSize(m_pLabel-size().width(), m_pLabel-size().height());m_pLabel-move(0, (height() - m_pLabel-height()) / 2);
}TotalItem::~TotalItem()
{}void TotalItem::SetTotal(int nTotal)
{if(nTotal 0) return;m_nTotal nTotal;QString str QString::number(nTotal);m_pLabel-setText(共 str 条);m_pLabel-adjustSize();setMinimumSize(m_pLabel-size().width(), m_pLabel-size().height());
}int TotalItem::GetTotal() const
{return m_nTotal;
}void TotalItem::paintEvent(QPaintEvent *event)
{QStyleOption opt;opt.init(this);QPainter p(this);style()-drawPrimitive(QStyle::PE_Widget, opt, p, this);QWidget::paintEvent(event);
}///EachPageItem//EachPageItem::EachPageItem(QWidget *parent) : QWidget(parent)
{setObjectName(per_page_item);setStyleSheet(QStringLiteral(QWidget#per_page_item{background-color:transparent;}));m_pCbx new QComboBox(this);m_pCbx-setFixedSize(100, 27);setFixedSize(105, 30);m_pCbx-setView(new QListView(this));m_pCbx-view()-setFocusPolicy(Qt::NoFocus);m_pCbx-setStyleSheet(QStringLiteral(QComboBox{text-align:center;font-size:15px;border:1px solid #DCDFE6;border-radius:5px;}QComboBox:hover{border:1px solid #409EFF;}QComboBox::drop-down{background-color:transparent;}QComboBox::down-arrow{image:url(:/pagination/skin/drop_down.png);}QComboBox::down-arrow:on{image:url(:/pagination/skin/drop_up.png);}QComboBox QAbstractItemView{text-align:center;font-weight:bold;border:none;font-size:14px;outline:0px;}QComboBox QAbstractItemView::item{border:none;color:#606266;border:none;height:30px;}QComboBox QAbstractItemView::item:selected{color:#409EFF;background:rgb(245,247,250);}));m_pCbx-setCursor(QCursor(Qt::PointingHandCursor));m_pCbx-move(width() / 2 - m_pCbx-width() / 2, height() / 2 - m_pCbx-height() / 2);m_vecPage.reserve(5);connect(m_pCbx, QOverloadint::of(QComboBox::currentIndexChanged), this, [](int index){emit EachPageItemChanged(m_vecPage[index]);});
}EachPageItem::~EachPageItem()
{}void EachPageItem::SetItemEachPage(int *args, int size)
{m_vecPage.clear();m_pCbx-clear();m_vecPage.reserve(5);for(int i 0; i size; i){int n args[i];if(n 0){if(i 0){if(n m_vecPage[i - 1]) continue;}m_vecPage.emplace_back(n);m_pCbx-addItem(QString::number(n) 条/页);}}
}int EachPageItem::GetCurrent()
{unsigned long long idx m_pCbx-currentIndex();if(m_vecPage.size() idx 1){return m_vecPage[idx];}else return 0;
}void EachPageItem::paintEvent(QPaintEvent *event)
{QStyleOption opt;opt.init(this);QPainter p(this);style()-drawPrimitive(QStyle::PE_Widget, opt, p, this);QWidget::paintEvent(event);
}//GotoPageItem///GotoPageItem::GotoPageItem(QWidget *parent) : QWidget(parent)
{setObjectName(goto_page_item);setStyleSheet(QStringLiteral(QWidget#goto_page_item{background-color:transparent;}));m_pHMainLayout new QHBoxLayout(this);m_pLabel1 new QLabel(前往, this);m_pEditPage new QLineEdit(this);m_pLabel2 new QLabel(页, this);m_pLabel1-setStyleSheet(QStringLiteral(QLabel{font-size:15px;font-family:Microsoft Yahei;}));m_pEditPage-setStyleSheet(QStringLiteral(QLineEdit{font-size:15px;font-family:Microsoft Yahei;border-radius:5px;border:1px solid #DCDFE6;}QLineEdit:hover{border:1px solid #C0C4CC}QLineEdit:focus{border:1px solid #409EFF;}));m_pLabel2-setStyleSheet(QStringLiteral(QLabel{font-size:15px;font-family:Microsoft Yahei;}));m_pLabel1-adjustSize();m_pLabel2-adjustSize();m_pEditPage-setFixedSize(60, 30);QRegExp reg([0-9]$);QValidator* va new QRegExpValidator(reg, m_pEditPage);m_pEditPage-setValidator(va);m_pHMainLayout-addWidget(m_pLabel1);m_pHMainLayout-addWidget(m_pEditPage);m_pHMainLayout-addWidget(m_pLabel2);m_pHMainLayout-addStretch();m_pHMainLayout-setContentsMargins(0, 0, 0, 0);m_pEditPage-installEventFilter(this);
}GotoPageItem::~GotoPageItem()
{}void GotoPageItem::paintEvent(QPaintEvent *event)
{QStyleOption opt;opt.init(this);QPainter p(this);style()-drawPrimitive(QStyle::PE_Widget, opt, p, this);QWidget::paintEvent(event);
}bool GotoPageItem::eventFilter(QObject *watched, QEvent *event)
{if(event-type() QKeyEvent::KeyRelease){Qt::Key k static_castQt::Key((dynamic_castQKeyEvent*(event)-key()));if(k Qt::Key_Return || k Qt::Key_Enter){QString str m_pEditPage-text();int nPage 1;if(!str.isEmpty()) nPage str.toInt();emit GotoPage(nPage);return true;}}return QWidget::eventFilter(watched, event);
}
#ifndef PAGINATION_H
#define PAGINATION_H#include QWidget
#include QHBoxLayout
#include QPushButton
#include QLabel
#include QComboBox
#include QLineEdit#define MINIMUM_PAGE 1
#ifndef MAX_BUTTON_COUNT
#define MAX_BUTTON_COUNT 6
#endif#ifndef PAGE_STEP
#define PAGE_STEP 5
#endifclass TotalItem;
class EachPageItem;
class GotoPageItem;class Pagination : public QWidget
{Q_OBJECT
public:explicit Pagination(QWidget *parent nullptr);~Pagination() override;public:/*** brief SetTotalItem 设置总条目的显示* param nTotal 总条目*/void SetTotalItem(int nTotal);/*** brief SetItemPerPage 设置每页显示多少条目* param args 条目数组数组元素必须大于0且后面数必须大于前面* param size 数组大小*/void SetItemPerPage(int* args, int size);/*** brief Refresh 设置完条目或者每页条目后必须调用该函数刷新*/void Refresh();protected:void Init();void paintEvent(QPaintEvent* event) override;private:/*** brief FindPage 找到某页* param nIndex 要查找的页数从1开始* return 返回找到的页数按钮没有则返回空*/QPushButton* FindPage(int nIndex) const;/*** brief ClearPage 清除所有页*/void ClearPage();/*** brief ChangeView 修改页数的显示* param currentPage 当前页数*/void ChangeView(int currentPage);/*** brief GetPageItem 获取m_pHPageLayout里面的第nPos按钮* param nPos 要获取的按钮的位置nPos的索引从0开始* return 返回找到的按钮*/QPushButton* GetPageItem(int nPos);/*** brief Reload 重新加载分页*/void Reload();private:QHBoxLayout* m_pHMainLayout;QHBoxLayout* m_pHPageLayout; // 存放页数QPushButton* m_pBtnLeft;QPushButton* m_pBtnRight;QPushButton* m_pBtnOmitFront; // 前面的省略号QPushButton* m_pBtnOmitBack; // 后面的省略号TotalItem* m_pTotalItem;EachPageItem* m_pItemEachPage;GotoPageItem* m_pGotoItem;int m_nCurrentPage; // 当前页数int m_nMaxPage; // 最大页数int m_nDisplayPage; // 显示的页数std::vectorQPushButton* m_vecPageBtn;signals:void PageChanged(int nPage); // 页码变化void NumberPerPageChanged(int nCount); // 每页条码变化private slots:void btn_page_clicked();
};class TotalItem : public QWidget
{Q_OBJECT
public:explicit TotalItem(QWidget* parent nullptr);~TotalItem() override;void SetTotal(int nTotal);int GetTotal() const;protected:void paintEvent(QPaintEvent* event) override;private:QLabel* m_pLabel;// QHBoxLayout* m_pHMainLayout;int m_nTotal;
};class EachPageItem : public QWidget
{Q_OBJECT
public:explicit EachPageItem(QWidget* parent nullptr);~EachPageItem() override;void SetItemEachPage(int* args, int size);int GetCurrent();protected:void paintEvent(QPaintEvent* event) override;signals:void EachPageItemChanged(int nCount);private:QComboBox* m_pCbx;std::vectorint m_vecPage;
};class GotoPageItem : public QWidget
{Q_OBJECT
public:explicit GotoPageItem(QWidget* parent nullptr);~GotoPageItem() override;protected:void paintEvent(QPaintEvent* event) override;bool eventFilter(QObject *watched, QEvent *event) override;signals:void GotoPage(int nPage);private:QHBoxLayout* m_pHMainLayout;QLabel* m_pLabel1;QLineEdit* m_pEditPage;QLabel* m_pLabel2;
};#endif // PAGINATION_H