Qt::实现qtablewidget分页功能

这篇具有很好参考价值的文章主要介绍了Qt::实现qtablewidget分页功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:Qt:tableWidget分页功能,并且插入控件_chen_jin_sheng的博客-CSDN博客_qtablewidget分页显示td

头文件:

#pragma once

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButtonUpPage_clicked();

    void on_pushButtonNextPage_clicked();

    void on_pushButtonFirstPage_clicked();

    void on_pushButtonLastPage_clicked();

private:
    void InitTableWidget();
    void showPageData();
    int getPageCount(const int row_count);

private slots:
    void setCurPage(int n);
    void setTotalPage(int n);
    void on_lineEdit_textChanged(const QString &arg1);

private:
    Ui::MainWindow *ui;

    //数据库分页显示
    int pageSize;
    int curPage;
};

.cpp文件

#include "MainWindow.h"
#include "ui_MainWindow.h"

#include <QCheckBox>
#include <QHBoxLayout>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    InitTableWidget();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::InitTableWidget()
{
    pageSize = 10;
    curPage = 0;
    setCurPage(curPage);
    ui->tableWidget->setColumnCount(2);
    QStringList list;
    list << "name" << "编号";
    ui->tableWidget->setHorizontalHeaderLabels(list);
    //插入数据
    for(int i = 0; i < 55; i++)
    {
        int row_count = ui->tableWidget->rowCount();
        ui->tableWidget->insertRow(row_count);
        ui->tableWidget->setItem(i, 0, new QTableWidgetItem(QString::number(i+1) + "hhh"));
        QWidget *myWidget = new QWidget;
        QVBoxLayout *hLayout = new QVBoxLayout();
        QCheckBox *ckb = new QCheckBox();
        hLayout->addWidget(ckb);
        hLayout->setMargin(0);
        hLayout->setAlignment(ckb, Qt::AlignCenter);
        myWidget->setLayout(hLayout);
        ui->tableWidget->setCellWidget(i, 1, myWidget);
    }
    showPageData();
}

void MainWindow::showPageData()
{
   int rowCount = ui->tableWidget->rowCount();
   if(curPage == 0)
   {
       ui->pushButtonUpPage->setDisabled(true);
       ui->pushButtonFirstPage->setDisabled(true);
   }
   else
   {
       ui->pushButtonUpPage->setDisabled(false);
       ui->pushButtonFirstPage->setDisabled(false);
   }

   if(curPage == getPageCount(rowCount) - 1)
   {
       ui->pushButtonNextPage->setDisabled(true);
       ui->pushButtonLastPage->setDisabled(true);
   }
   else
   {
       ui->pushButtonNextPage->setDisabled(false);
       ui->pushButtonLastPage->setDisabled(false);
   }

   int iStart = pageSize * curPage;
   int iEnd = 0;
   if(iStart + pageSize < rowCount)
       iEnd = iStart + pageSize;
   else
       iEnd = rowCount;
   for(int i = 0; i < rowCount; i++)
   {
       if(i >= iStart && i < iEnd)
           ui->tableWidget->setRowHidden(i, false);
       else
           //隐藏指定行
           ui->tableWidget->setRowHidden(i, true);
   }
}

int MainWindow::getPageCount(const int row_count)
{
    int pagecount = 0;
    if(row_count == 0)
    {
        return 0;
    }
    else if(row_count % pageSize == 0)
    {
        pagecount = row_count / pageSize;
    }
    else
    {
        pagecount = row_count / pageSize + 1;
    }
    setTotalPage(pagecount);
    return pagecount;
}

void MainWindow::setCurPage(int n)
{
    ui->labelCurPage->setText(QString("第 %1 页").arg(n+1));
}

void MainWindow::setTotalPage(int n)
{
    ui->labelTotalPage->setText(QString("总共 %1 页").arg(n));
}


void MainWindow::on_pushButtonUpPage_clicked()
{
    curPage--;
    setCurPage(curPage);
    showPageData();
}

void MainWindow::on_pushButtonNextPage_clicked()
{
    curPage++;
    setCurPage(curPage);
    showPageData();
}

void MainWindow::on_pushButtonFirstPage_clicked()
{
    curPage = 0;
    setCurPage(curPage);
    setCurPage(curPage);
    showPageData();
}

void MainWindow::on_pushButtonLastPage_clicked()
{
    curPage = getPageCount(ui->tableWidget->rowCount()) -1;
    setCurPage(curPage);
    showPageData();
}

void MainWindow::on_lineEdit_textChanged(const QString &arg1)
{
    int turnpage = arg1.toInt();
    if(turnpage > 0 && turnpage < getPageCount(ui->tableWidget->rowCount()) + 1)
    {
        curPage = turnpage -1;
        setCurPage(curPage);
        showPageData();
    }
}

实现效果:

 qt分页控件,Qt学习,qt,开发语言

 

 大佬写得很棒,很简单就实现了qtablewidget的分页功能,但是不知道会不会有什么问题,现在看起来是没问题的,加了个跳转功能,写得比较潦草文章来源地址https://www.toymoban.com/news/detail-610324.html

到了这里,关于Qt::实现qtablewidget分页功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ Qt开发:Tab与Tree组件实现分页菜单

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 tabWidget 选择夹组件与 TreeWidget 树形选择组件,的常用方法及灵活运用。 QTabW

    2024年02月04日
    浏览(41)
  • 基于Qt5的图像交互控件开发(C++实现)

    博主近期看到海康VM、halcon以及visionpro视觉软件都包含一个图像智能交互控件,然后近期根据其中的技术原理,也基于Qt5仿照开发了一个类似的功能,包含矩形、旋转矩形、任意多边形、圆、圆环、扇环,直线卡尺以及圆卡尺等常用控件,图像智能交互是在计算机视觉领域中

    2024年02月05日
    浏览(57)
  • 03 QT基本控件和功能类

    当在QT中,在已知类名的情况下,要了解类的构造函数 常用属性 及 信号和槽 常用api 特征:可以获取当前控件的值和设置它的当值 ---- int 1)QProgress 常用信号: 2)QSlider 常用的信号: 点击按钮: QPushButton QToolButton 单选按钮: QRadioButton 复选按钮: QCheckBox 对于按钮类来说,

    2024年02月12日
    浏览(32)
  • C++ Qt开发:TabWidget实现多窗体功能

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍 TabWidget 标签组件的常用方法及灵活运用。 QTabWidget 是Qt中用于实现标签页(t

    2024年02月04日
    浏览(47)
  • 【使用VS开发的第一个QT项目——实现相机功能(包括QT下载、配置、摄像头程序)】

    下载链接 windows程序的后缀是.exe Ubuntu程序的后缀是.run 按照安装指示操作、注册QT,然后出现”选择“界面时 勾选“MinGW 7.3.0 64-bit”,“MSVC 2017 64-bit”;点击“Developer and Designer Tools”前的尖号,打开其中选项,勾选“MinGW 7.3.0 64-bit”。 在VS\\\"工具\\\"→\\\"扩展与更新\\\"→\\\"联机\\\"中搜

    2024年02月07日
    浏览(56)
  • 【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明

    博客主页:Duck Bro 博客主页 系列专栏:Qt 专栏 关注博主,后期持续更新系列文章 如果有错误感谢请大家批评指出,及时修改 感谢大家点赞👍收藏⭐评论✍ 文章编号:Qt 学习笔记 / 29 1. 简介 QTextEdit是Qt中的一个可编辑的文本框控件,可以用于显示和编辑多行文本。 它是基于

    2024年04月28日
    浏览(47)
  • Qt控件学习

    目录 QPushButton  QToolButton QRadioButton QCheckBox   他是高配版QPushButton 添加如下代码: QRadioButton 是 Qt 提供的单选按钮, 如果单选按钮被选中, 再次点击这个按钮选中状态是不能被取消的。且一组只能选一个, 它的父类是 QAbstractButton。 用容器去吧这一组一组的按钮区分开来,容

    2024年02月16日
    浏览(33)
  • QT-QTablewidget 设置选中某一行

    要在 QTableWidget 中设置选中的行,可以使用 setCurrentItem() 函数来设置当前的 QTableWidgetItem。你可以通过调用 QTableWidget 的 item() 函数获得指定行和列的 QTableWidgetItem,然后通过将其传递给 setCurrentItem() 函数来设置选中的行。 下面是一个示例代码,演示了如何设置 QTableWidget 中的选

    2024年02月09日
    浏览(42)
  • QT实例2(QTableWidget表格中增删数据)

    本案例仅简单介绍QTableWidget部分使用方法,如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时,设置了条件判断如正则表达式,若用户输入的数据不合法,则添加失败并提示用户错误的地方,便于用户修改。 如上图所示,使用QWidget类创建并设置UI界面,其中

    2024年02月01日
    浏览(34)
  • Qt QTableWidget 表格自适应 高度和宽度

    1. 在MainWindow中设置 1.1. 对被嵌入的子窗口进行设置,去除子窗口的一些影响到嵌入的部件。 pTable:指向子窗口堆内存的指针 1.2. 设置子窗口可以跟随主窗口自适应变化宽度。 水平方向:子窗口的自适应缩放。也可以直接在设计师中完成。 2. 在QTableWidget ui表格的 cpp文件中设

    2023年04月21日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包