C++ 数组分页,经常有用到分页,索性做一个简单封装 已解决

这篇具有很好参考价值的文章主要介绍了C++ 数组分页,经常有用到分页,索性做一个简单封装 已解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在项目设计中, 有鼠标滑动需求,但是只能说能力有限,索性使用 php版本的数组分页,解决问题。 经常有用到分页,索性做一个简单封装、

C++ 数组分页,经常有用到分页,索性做一个简单封装 已解决,c++,c++,开发语言

测试用例

  QTime curtime = QTime::currentTime();

        nHour = curtime.hour();
        nMin = curtime.minute();
        nSec = curtime.second();

  setTimeBtnWidget(nHour, 24, ceil(nHour / 6), 6,1, ui->verticalLayout_10);


  setTimeBtnWidget(nMin, 60, ceil(nMin / 6), 6, 2, ui->verticalLayout_2);


  setTimeBtnWidget(nSec, 60, ceil(nSec / 6), 6, 3, ui->verticalLayout_4);

 使用方法

	/**
	* @breif  : 设置 时间上下按钮
	* @param  : index 第几个
	* @param  : count 总数量
	* @param  : page  第几页
	* @param  : size  显示数量
	* @param  : type  类型
	* @param  : QLayout  布局名称
	* @return : void
	* @date   : 2024/01/10 16:28
	*/
	void setTimeBtnWidget(int index,int count,int page,int size,int type, QLayout* layout);

  封装函数 文章来源地址https://www.toymoban.com/news/detail-783521.html


void CCalendarWidget::setTimeBtnWidget(int index,int count,int page,int size,int type, QLayout* layout)
{
    clearLayout(layout);
    
    double  tatakPage = ceil(count / size);
    int offset = (page - 1) * size;
    for (int i = 0; i < 8; i++) {

        QPushButton* pBtn = new QPushButton();
     
        if (i == 0)
        {
            //星期widget
            QWidget* upBtnWidget = new QWidget;
            upBtnWidget->setMaximumWidth(40);
            //星期布局
            QHBoxLayout* layoutUpWidget = new QHBoxLayout(upBtnWidget);

            pBtn->setFixedSize(10, 6);
            pBtn->setChecked(true);
            pBtn->setStyleSheet(
                "border-image:url(:/images/Resources/images/CCalendarWidget/upBtn.png);border:none;font-size: 14px;color:#FFFFFF;");

            pBtn->setCursor(Qt::PointingHandCursor);

            layoutUpWidget->spacing();
            layoutUpWidget->addWidget(pBtn);
            layoutUpWidget->spacing();

            layout->addWidget(upBtnWidget);

            connect(pBtn, &QPushButton::clicked, [=]
            {
                if (timeIndex >= 0 && timeIndex <= tatakPage)
                {
                    setTimeBtnWidget(timeIndex * size+3,count, timeIndex, size, type, layout);
                    timeIndex--;
                }
                else {
                    timeIndex = 0;
                }
            });
        }

        if (i == 7)
        {   
            //星期widget
            QWidget* downBtnWidget = new QWidget;
            downBtnWidget->setMaximumWidth(40);
            //星期布局
            QHBoxLayout* layoutDownWidget = new QHBoxLayout(downBtnWidget);

            pBtn->setFixedSize(10, 6);
            pBtn->setChecked(true);
            pBtn->setStyleSheet(
                "border-image:url(:/images/Resources/images/CCalendarWidget/downBtn.png);border:none;font-size: 14px;color:#FFFFFF;");
            pBtn->setCursor(Qt::PointingHandCursor);

            layoutDownWidget->spacing();
            layoutDownWidget->addWidget(pBtn);
            layoutDownWidget->spacing();

            layout->addWidget(downBtnWidget);

            connect(pBtn, &QPushButton::clicked, [=]
            {
                if (timeIndex >= 0 && timeIndex < tatakPage)
                {
                    setTimeBtnWidget(timeIndex * size + 3,count, timeIndex,size, type, layout);
                    timeIndex++;
                }
                else {
                    timeIndex = tatakPage-1;
                }
            });
        }

        if (i > 0 && i < 7)
        {
            pBtn->setChecked(true);

            connect(pBtn, &QPushButton::clicked, [=]
                {
                    int index = pBtn->text().toInt();
                    setTimeBtnWidget(index, count, page, size, type, layout);

                    if (type == 1)
                    {
                        nHour = index;
                    }
                    if (type == 2)
                    {
                        nMin = index;
                    }
                    if (type == 3)
                    {
                        nSec = index;
                    }
                    setTime();
                });
            pBtn->setFixedSize(40, 26);
            pBtn->setText(QString::number(page * size + i-1));
            pBtn->setCursor(Qt::PointingHandCursor);
            layout->addWidget(pBtn);
            layout->spacing();
        }

        if (page * size + i-1 == index)
        {
            pBtn->setChecked(true);

            pBtn->setStyleSheet(
                "background:#0D85FF;"
            );
        }
    }
}

void CCalendarWidget::clearLayout(QLayout* layout)
{
    if (!layout) return;
    while (auto item = layout->takeAt(0))
    {
        if (item->layout())
        {
            clearLayout(item->layout());
        }
        else	 if (item->widget())
        {
            item->widget()->close();
        }
    }
}

到了这里,关于C++ 数组分页,经常有用到分页,索性做一个简单封装 已解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 最简单的VSCode解决中文乱码方法(亲测有用)

    解决VSCode输出中文乱码问题 前言 一、问题的起因 二、解决方法 1.进入setting.json文件 2.输入代码 3.验证 总结         在刚接触VSCode编程过程中,经常会遇到中文乱码的问题。查询了不少相关的博客,解决方法很多,但实际没有帮到我,琢磨了半天,找到了可行方法,这里

    2024年02月05日
    浏览(30)
  • 1.1 编写一个简单的C++程序

      博主介绍:爱打游戏的计算机专业学生 博主主页:夏驰和徐策 所属专栏:夏驰和徐策带你从零开始学C++ 这段话解释了一个C++程序中的`main`函数的基本结构和功能。 它告诉我们以下几点: 1. C++程序的入口点是`main`函数,操作系统通过调用`main`函数来运行程序。 2. `main`函数

    2024年02月10日
    浏览(48)
  • 无偿分享一个很有用的看源码小技巧

    怎么在 idea 里面查看 git 提交记录呢?这个界面是藏在哪里的呢,我的 idea 里面怎么没有呢? 好的,是我疏忽了,我先入为主的认为这个大家应该都知道是怎么来的。 但是确实是有一些同学是不太清楚的,那我这篇文章就给大家分享一下我通过这个东西看源码的一点点小技巧

    2024年01月20日
    浏览(29)
  • C++笔记之是否知道了一个数组首元素的地址就可以获取该整个数组?-合众新能源汽车面试官问题

    事前提要:前段时间去面一个公司,面试官说知道了一个数组首元素的地址,就可以获取该整个数组,我当时就困惑,不知道大小和长度,只知道地址怎么就能获取。但也没反驳面试官,面试也没通过。

    2024年02月12日
    浏览(30)
  • 【C++】iota函数 + sort函数实现基于一个数组的多数组对应下标绑定排序

    目录 一、iota函数 1. 函数解析 ​①  迭代器类型(补充) ② 头文件 ③  参数 2. 函数用途与实例 二、sort函数 1、 函数解读 2、实现倒序排列 2.1 greater 与 less 模板参数 2.2  lambda表达式 三、下标绑定排序(zip) --- 833.字符串中的查找与替换 ①  迭代器类型(补充) ForwardIterator :

    2024年02月12日
    浏览(42)
  • 使用c/c++语言写一个简单的学生信息管理系统(使用结构体数组,包含文件储存,文件读取等)

    使用c/c++开发的一个简单学生信息管理系统,功能如图所示: 选择不同的数字后可以选择不同的功能使用 在刚开始运行系统时会进行一个系统暂停,使用了windows函数库里面的system(\\\"pause\\\"),暂停系统有助于保护系统稳定性,防止系统出现闪屏等意外情况导致闪退等,并且使用了

    2024年02月09日
    浏览(30)
  • 【C++】学习C++时,经常忘记的知识点合集(1)

    不清楚的知识点合集:C++篇 参考答案:chatgpt。有 些答案不保证正确 目前使用最广泛的C++标准是C++17。C++17于2017年发布,引入了许多新的语言特性和库功能,包括结构化绑定、constexpr if、折叠表达式、变量模板、并行STL算法等等。同时,C++17还对一些现有特性进行了改进和扩

    2024年02月08日
    浏览(26)
  • 使用C++界面框架ImGUI开发一个简单程序

    目录 简介 使用示例 下载示例 main文件 设置ImGui风格 设置字体 主循环 添加Application类 中文编码问题 界面设计 关于imgui_demo.cpp 创建停靠空间 创建页面 隐藏窗口标签栏 创建导航页面 创建内容页面 隐藏控制台窗口 打包程序 总结 待解决问题 开发优势 附件 ImGui 是一个用于C++的

    2024年02月13日
    浏览(30)
  • 【C语言】中,输入一个数组,实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

    本篇文章中,我们将讲述在C语言中,输入一个数组,如何用for循环实现将输入的n个数字按照从大到小输出。 首先,我们定义一个整形的数组并将其初始化。输入n,来决定数组中整数的个数。 然后用for循环来输入这个数组中的各个数字。 接下来,就是对这个数组中的数字进

    2024年02月08日
    浏览(36)
  • 一个简单好用的C++语言单元测试框架-GoogleTest

    GoogleTest 是由 Google 开发的一个用于编写 C++ 单元测试的框架。单元测试中单元的含义,单元就是人为规定的最小的被测功能模块,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。在实际项目中,单元测试往往由开发人员完成。

    2024年01月19日
    浏览(80)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包