#ifndef PAGINATION_H #define PAGINATION_H #include class Pagination : public QWidget { Q_OBJECT public: enum Layout { TOTAL = 1, PREV = 2, PAGER = 4, NEXT = 8 }; explicit Pagination(QWidget* parent = nullptr); explicit Pagination(int total, int pageSize, QWidget* parent = nullptr); ~Pagination(); // 设置当前页 int currentPage() const; void setCurrentPage(int page); QString prevText() const; void setPrevText(const QString& text); QString nextText() const; void setNextText(const QString& text); Layout layout() const; void setLayout(Layout layout); int spacing() const; void setSpacing(int spacing); // 设置最大页码按钮数 页码按钮的数量,当总页数超过该值时会折叠 int pagerCount() const; void setPagerCount(int count); // 每页显示个数选择器的选项设置 int pageSizes() const; void setPageSizes(int count); int total() const; void setTotal(int count); Q_SIGNALS: void valueChanged(int value); protected: QSize sizeHint() const override; QSize minimumSizeHint() const override; void paintEvent(QPaintEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override; void mousePressEvent(QMouseEvent* event) override; void leaveEvent(QEvent* event) override; private: class PaginationPrivate* d; }; #endif // PAGINATION_H