IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> QTableWidget 设置翻页和滑动滚动条时页数自动更新 -> 正文阅读

[C++知识库]QTableWidget 设置翻页和滑动滚动条时页数自动更新

? 本文程序效果如下:

代码如下

///.cpp

#include "QtableWidget.h"

QtableWidget::QtableWidget(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
	ui.tableWidget->setShowGrid(true);
	ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
	ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
	ui.tableWidget->setColumnCount(2);
	ui.tableWidget->verticalHeader()->hide();//取消默认行号
	QStringList header;
	header << tr("No") << tr("Value");
	ui.tableWidget->setHorizontalHeaderLabels(header);
	m_nCurPage = 1;
	m_nRowsPerPage = 7;
	m_nTotalPages = 1;
	InitTable();

	connect(ui.pbtnBefore,SIGNAL(clicked()),this,SLOT(OnBtnPrePage()));	//响应上一页
	connect(ui.btnNext, SIGNAL(clicked()), this, SLOT(OnBtnNextPage()));//响应下一页
	connect(ui.tableWidget->verticalScrollBar(), SIGNAL(valueChanged(int)),this,SLOT(OnSlideAction(int)));//响应滚动条翻页
}

void QtableWidget::InitTable()
{
	for (int i = 0; i < 100;i++)
	{
		m_vecData.push_back(i);
	}


	//计算总页数-----本demo一个数据一行数据。若是一行多个数据,请按照多个数据计算页数。

	if (m_vecData.size() % m_nRowsPerPage == 0) //计算总页数
	{
		m_nTotalPages = m_vecData.size() / m_nRowsPerPage;
	}	
	else 
	{
		m_nTotalPages = m_vecData.size() / m_nRowsPerPage + 1;
	}
	
	//插入表数据---本demo一个数据一行数据。若是一行多个数据,请按照数据个数插入表格数据。
	ui.labPage->setText(QString("%1/%2").arg(m_nCurPage).arg(m_nTotalPages));
	ui.tableWidget->setRowCount(m_nTotalPages* m_nRowsPerPage); //设置显示的行数
	for (int i = 0; i < m_vecData.size(); i++)
	{
		ui.tableWidget->setItem(i, 0, new QTableWidgetItem(QString::number(m_vecData[i] + 1)));
		ui.tableWidget->setItem(i, 1, new QTableWidgetItem(QString::number(m_vecData[i] + 1)));
	}


}

void QtableWidget::OnBtnPrePage()
{
	m_nCurPage--;
	if (m_nCurPage <= 0)
	{
		m_nCurPage = m_nTotalPages;
	}

	ui.tableWidget->verticalScrollBar()->setSliderPosition(m_nCurPage*m_nRowsPerPage - m_nRowsPerPage);
	ui.labPage->setText(QString("%1/%2").arg(m_nCurPage).arg(m_nTotalPages));
}

void QtableWidget::OnBtnNextPage()
{
	m_nCurPage++;
	if (m_nCurPage > m_nTotalPages)
	{
		m_nCurPage = 1;
	}

	ui.tableWidget->verticalScrollBar()->setSliderPosition(m_nCurPage*m_nRowsPerPage - m_nRowsPerPage);
	ui.labPage->setText(QString("%1/%2").arg(m_nCurPage).arg(m_nTotalPages));
}

void QtableWidget::OnSlideAction(int nRowIndex)
{
	qDebug() << "Row " << nRowIndex << endl;
	
	++nRowIndex;
	//计算当前行是那一页
	if (nRowIndex % m_nRowsPerPage == 0)
	{
		m_nCurPage = nRowIndex / m_nRowsPerPage;
	}
	else
	{
		m_nCurPage = nRowIndex / m_nRowsPerPage+1;
	}
	ui.labPage->setText(QString("%1/%2").arg(m_nCurPage).arg(m_nTotalPages));
}

//.h//
#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QtableWidget.h"
#include <qtablewidget.h>
#include <vector>
#include <qscrollbar.h>
#include <qdebug.h>
using namespace std;
class QtableWidget : public QMainWindow
{
    Q_OBJECT

public:
    QtableWidget(QWidget *parent = Q_NULLPTR);

	//初始化数据
	void	InitTable();

public slots:
	void OnBtnPrePage();

	void OnBtnNextPage();

	void OnSlideAction(int nRowIndex);
private:
    Ui::QtableWidgetClass ui;

	vector <int> m_vecData;	//数据
	int m_nCurPage;		//当前页数
	int m_nRowsPerPage; //每页显示的行数
	int m_nTotalPages; //表格总页数
};

注:用到的滑动条的信号

[signal] void QAbstractSlider::valueChanged(int value)

This signal is emitted when the slider value has changed, with the new slider value as argument.

Note: Notifier signal for property value.

本文章部分代码参考于QTableWidget实现表格数据显示以及翻页效果_shuifei2020的博客-CSDN博客_qtablewidget翻页

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:22:52  更:2022-05-09 12:25:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 18:32:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码