利用QT做一个程序。功能:对读取的数据分页显示。每一页只显示100条记录每一页显示的记录数量可以由用户设置超过100条记录则进行多页显示。用户可以通过点击首页、上一页、下一页、末页、跳转按钮加载想要显示的记录。
以下是一个简单的实现分页显示数据的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来创建一个简单的分页显示数据的应用程序。
原文地址: http://www.cveoy.top/t/topic/brO9 著作权归作者所有。请勿转载和采集!