以下是一个简单的实现分页显示数据的QT程序:

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QTableWidget>
#include <QtWidgets/QHeaderView>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr)
        : QMainWindow(parent)
    {
        // 设置窗口标题和大小
        setWindowTitle("分页显示数据");
        setFixedSize(640, 480);

        // 初始化控件
        initWidgets();

        // 加载数据
        loadData(0, pageSize);
    }

private:
    // 初始化控件
    void initWidgets()
    {
        // 首页按钮
        QPushButton *firstButton = new QPushButton("首页", this);
        firstButton->move(20, 20);
        connect(firstButton, &QPushButton::clicked, this, &MainWindow::onFirstClicked);

        // 上一页按钮
        QPushButton *prevButton = new QPushButton("上一页", this);
        prevButton->move(100, 20);
        connect(prevButton, &QPushButton::clicked, this, &MainWindow::onPrevClicked);

        // 下一页按钮
        QPushButton *nextButton = new QPushButton("下一页", this);
        nextButton->move(180, 20);
        connect(nextButton, &QPushButton::clicked, this, &MainWindow::onNextClicked);

        // 末页按钮
        QPushButton *lastButton = new QPushButton("末页", this);
        lastButton->move(260, 20);
        connect(lastButton, &QPushButton::clicked, this, &MainWindow::onLastClicked);

        // 跳转按钮
        QPushButton *jumpButton = new QPushButton("跳转", this);
        jumpButton->move(340, 20);
        connect(jumpButton, &QPushButton::clicked, this, &MainWindow::onJumpClicked);

        // 页面大小标签和编辑框
        QLabel *pageSizeLabel = new QLabel("每页显示:", this);
        pageSizeLabel->move(420, 20);

        QLineEdit *pageSizeEdit = new QLineEdit("100", this);
        pageSizeEdit->move(500, 20);

        connect(pageSizeEdit, &QLineEdit::editingFinished, [=]() {
            pageSize = pageSizeEdit->text().toInt();
            loadData(0, pageSize);
        });

        // 表格
        tableWidget = new QTableWidget(this);
        tableWidget->move(20, 60);
        tableWidget->setFixedSize(600, 400);
        tableWidget->setColumnCount(2);
        tableWidget->setHorizontalHeaderLabels(QStringList() << "编号" << "数据");

        // 设置表头样式
        QHeaderView *header = tableWidget->horizontalHeader();
        header->setSectionResizeMode(QHeaderView::Stretch);
        header->setStyleSheet("QHeaderView::section { background-color: #f0f0f0; }");
    }

    // 加载数据
    void loadData(int start, int count)
    {
        // 清空表格
        tableWidget->setRowCount(0);

        // 生成数据
        for (int i = start; i < start + count && i < data.size(); i++) {
            int row = tableWidget->rowCount();
            tableWidget->insertRow(row);

            QTableWidgetItem *item1 = new QTableWidgetItem(QString::number(i));
            QTableWidgetItem *item2 = new QTableWidgetItem(data[i]);

            tableWidget->setItem(row, 0, item1);
            tableWidget->setItem(row, 1, item2);
        }

        // 更新页码和状态
        int totalPages = (data.size() + pageSize - 1) / pageSize;
        int currentPage = start / pageSize + 1;

        QString status = QString("第 %1/%2 页,共 %3 条数据").arg(currentPage).arg(totalPages).arg(data.size());
        statusBar()->showMessage(status);
    }

    // 首页按钮点击事件
    void onFirstClicked()
    {
        loadData(0, pageSize);
    }

    // 上一页按钮点击事件
    void onPrevClicked()
    {
        int start = (currentPage - 2) * pageSize;
        loadData(start, pageSize);
    }

    // 下一页按钮点击事件
    void onNextClicked()
    {
        int start = currentPage * pageSize;
        loadData(start, pageSize);
    }

    // 末页按钮点击事件
    void onLastClicked()
    {
        int start = (data.size() / pageSize) * pageSize;
        loadData(start, pageSize);
    }

    // 跳转按钮点击事件
    void onJumpClicked()
    {
        bool ok;
        int page = QInputDialog::getInt(this, "跳转", "请输入要跳转的页码", currentPage, 1, data.size() / pageSize + 1, 1, &ok);

        if (ok) {
            int start = (page - 1) * pageSize;
            loadData(start, pageSize);
        }
    }

private:
    QTableWidget *tableWidget;  // 表格控件
    QVector<QString> data = {"数据1", "数据2", "数据3", "数据4", "数据5", "数据6", "数据7", "数据8", "数据9", "数据10",
                             "数据11", "数据12", "数据13", "数据14", "数据15", "数据16", "数据17", "数据18", "数据19", "数据20",
                             "数据21", "数据22", "数据23", "数据24", "数据25", "数据26", "数据27", "数据28", "数据29", "数据30"};  // 数据源
    int currentPage = 1;       // 当前页码
    int pageSize = 100;         // 页面大小
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;
    w.show();

    return a.exec();
}

#include "main.moc"

该程序使用了一个QVector作为数据源,包含30条数据。在程序中,我们使用了一个QTableWidget来显示数据,每页最多显示100条记录。用户可以通过点击“首页”、“上一页”、“下一页”、末页、“跳转”按钮来加载想要显示的记录。

在加载数据时,我们根据起始位置和页面大小来生成数据,并将数据填充到表格中。同时,我们还需要根据当前页码和总页数来更新状态栏的显示。

通过这个程序,我们可以学习到如何使用QT来创建一个简单的分页显示数据的应用程序。

利用QT做一个程序。功能:对读取的数据分页显示。每一页只显示100条记录每一页显示的记录数量可以由用户设置超过100条记录则进行多页显示。用户可以通过点击首页、上一页、下一页、末页、跳转按钮加载想要显示的记录。

原文地址: http://www.cveoy.top/t/topic/brO9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录