c++ 分页查询

#include <iostream>
#include <cmath>
#include <string>
using namespace std;

int main() {
    int M, X;
    cin >> M >> X;
    for (int page_size, page_num, record_count;
         cin >> page_size >> page_num >> record_count;) {
        int page, move;
        if (page_size < M) {
            page_size = M;
        } else if (page_size > X)
            page_size = X;
        if (record_count % page_size != 0) {
            page = (record_count / page_size) + 1;
        } else
            page = (record_count / page_size);
        if (page_num < 1) {
            page_num = 1;;
        } else if (page_num > page && page != 0) {
            page_num = page;
        } else if (page == 0)
            page_num = 1;
        int64_t tmp = (int64_t)(page_num - 1) * (int64_t)page_size;
        if ((int64_t) ((int32_t) tmp) != tmp) {
        } else {
            move = (page_num - 1) * page_size;
            cout << page_size << " " << page << " " << page_num << " " << move << endl;
        }
    }
}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Qt中,可以使用QTableWidget组件来显示表格数据。要实现分页显示,可以使用QTableView组件和QAbstractItemModel模型类。下面是一个简单的示例: 1. 创建一个QTableView组件和一个分页控件QPaginator。 2. 创建一个自定义的TableModel类,继承自QAbstractItemModel类,用于管理表格数据。 3. 在TableModel类中实现rowCount()和columnCount()方法,返回表格的行数和列数。 4. 在TableModel类中实现data()方法,用于返回指定单元格的数据。 5. 在主窗口中,将QTableView组件设置为TableModel类的视图,并将分页控件绑定到TableModel类的槽函数中。 下面是完整的示例代码: ``` // tablemodel.h #include <QAbstractItemModel> class TableModel : public QAbstractItemModel { Q_OBJECT public: explicit TableModel(QObject *parent = nullptr); int rowCount(const QModelIndex &parent) const override; int columnCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; private: QStringList m_headers; QList<QStringList> m_data; }; // tablemodel.cpp #include "tablemodel.h" TableModel::TableModel(QObject *parent) : QAbstractItemModel(parent) { m_headers << "Name" << "Age" << "Gender" << "City" << "Country"; QList<QStringList> data; data << (QStringList() << "Alice" << "25" << "Female" << "New York" << "USA"); data << (QStringList() << "Bob" << "30" << "Male" << "London" << "UK"); data << (QStringList() << "Charlie" << "27" << "Male" << "Paris" << "France"); data << (QStringList() << "David" << "35" << "Male" << "Tokyo" << "Japan"); data << (QStringList() << "Emily" << "22" << "Female" << "Sydney" << "Australia"); m_data = data; } int TableModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); return m_data.count(); } int TableModel::columnCount(const QModelIndex &parent) const { Q_UNUSED(parent); return m_headers.count(); } QVariant TableModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role == Qt::DisplayRole) { return m_data[index.row()][index.column()]; } return QVariant(); } // mainwindow.h #include <QMainWindow> #include <QTableView> #include <QPaginator> #include "tablemodel.h" class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: TableModel *m_model; QTableView *m_view; QPaginator *m_paginator; int m_pageSize = 2; private slots: void loadPage(int page); }; // mainwindow.cpp #include "mainwindow.h" #include <QVBoxLayout> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { m_model = new TableModel(this); m_view = new QTableView(this); m_view->setModel(m_model); m_paginator = new QPaginator(this); m_paginator->setPageCount(qCeil(m_model->rowCount(QModelIndex()) / (double)m_pageSize)); connect(m_paginator, &QPaginator::currentPageChanged, this, &MainWindow::loadPage); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(m_view); layout->addWidget(m_paginator); QWidget *centralWidget = new QWidget(this); centralWidget->setLayout(layout); setCentralWidget(centralWidget); loadPage(0); } MainWindow::~MainWindow() { } void MainWindow::loadPage(int page) { int start = page * m_pageSize; int end = qMin(start + m_pageSize, m_model->rowCount(QModelIndex())); QModelIndex parent; beginResetModel(); for (int i = 0; i < m_model->rowCount(parent); i++) { QModelIndex index = m_model->index(i, 0, parent); bool isVisible = i >= start && i < end; m_view->setRowHidden(i, !isVisible); } endResetModel(); m_paginator->setPageCount(qCeil(m_model->rowCount(QModelIndex()) / (double)m_pageSize)); m_paginator->setCurrentPage(page); } ``` 在这个示例中,我们使用QPaginator组件来实现分页效果。在loadPage()槽函数中,我们根据当前页数计算出要显示的行数范围,然后将不需要显示的行隐藏起来。使用beginResetModel()和endResetModel()函数可以保证在隐藏行时不会导致视图更新。最后,我们更新分页控件的页数和当前页数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值