Qt工作笔记-列表的分页显示(Qt Widgets框架)
目录基本概念演示及代码打包下载基本概念关键是逻辑,因为数据都存储在数据结构中,如何把数据结构里面的东西显示到界面上,这才是分页的关键!估计稍微有代码量的程序员看到这就知道该怎么做了。这里以ListWidget为例。做一个分页的功能;演示及代码演示如下:下一页:上一页:程序结构如下:源码如下:widget.h...
·
目录
基本概念
关键是逻辑,因为数据都存储在数据结构中,如何把数据结构里面的东西显示到界面上,这才是分页的关键!估计稍微有代码量的程序员看到这就知道该怎么做了。
这里以ListWidget为例。做一个分页的功能;
演示及代码
演示如下:
下一页:

上一页:

程序结构如下:

源码如下:
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QVector>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
protected:
void setListWidget(const int ¤tPage);
protected slots:
void upBtnClicked();
void downBtnClicked();
private:
Ui::Widget *ui;
QVector<QString> m_vec;
int m_pageCount;
int m_currentPageNum; //当前页数
int m_countPageNum; //总页数
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("CSDN IT1995");
m_pageCount = 52; //如果每页52条
for(int i = 0; i < 666; i++){
m_vec << "第 " + QString::number(i) + " 条";
}
//默认第一页
setListWidget(1);
connect(ui->upPushButton, SIGNAL(clicked()), this, SLOT(upBtnClicked()));
connect(ui->downPushButton, SIGNAL(clicked()), this, SLOT(downBtnClicked()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::setListWidget(const int ¤tPage)
{
if(currentPage <= 0){
qDebug() << "Error: The currentPage can't be 0";
return;
}
int startNum = m_pageCount * (currentPage - 1);
ui->listWidget->clear();
for(int i = 0; i < m_pageCount; i++){
if(startNum + i >= m_vec.size())
break;
ui->listWidget->addItem(m_vec[startNum + i]);
}
m_currentPageNum = currentPage;
m_countPageNum = m_vec.size() / m_pageCount + 1;
ui->currentPageLabel->setText(QString::number(m_currentPageNum));
ui->countPageLabel->setText(QString::number(m_countPageNum));
}
void Widget::upBtnClicked()
{
setListWidget(m_currentPageNum - 1);
}
void Widget::downBtnClicked()
{
if(m_currentPageNum >= m_countPageNum)
return;
setListWidget(m_currentPageNum + 1);
}
打包下载
更多推荐
所有评论(0)