C++ Qt实现动态增加垂直滚动条

 更新时间:2023年08月28日 09:38:44   作者:执念斩长河  
本博文源于笔者正在工作的一个小内容,内容涉及到为qt动态增加垂直滚动条,文章分为三个部分,问题起源,问题解决方案,问题解决成功效果,思路清晰,文章干货满满,复制源码即可使用,需要的朋友可以参考下

问题起源

qt中一个页面测试项一共很多种,如果都在一个页面显示就会显得很臃肿,如果有个动态创建时有个可以下拉的滚动条就很好。下面读者可以看下没有滚动条的页面

问题解决方案

#include "widget.h"
#include <QApplication>
#include <QtGui>
#include <QVBoxLayout>
#include <QTableWidget>
#include <QPushButton>
#include <QLabel>
#include <QScrollArea>
#include<QGroupBox>
#include<QCheckBox>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget *page = new QWidget; //整个内容
    QVBoxLayout* mainLayout = new QVBoxLayout(page);//铺满整个页面
    QScrollArea* scrollArea = new QScrollArea;
    QWidget* contentWidget = new QWidget;
    QVBoxLayout* contentLayout = new QVBoxLayout(contentWidget);//将layout绑定起来了
    scrollArea->setWidgetResizable(true);
    contentLayout->setAlignment(Qt::AlignTop);
    QTabWidget tabWidget;
    QWidget tab1,tab2;
    // 模拟数据
    QList<QString> caseNames;
       caseNames << "Case 1" << "Case 2" << "Case 3" << "Case 4" << "Case 5" << "Case 6" << "Case 7" << "Case 8";
       for (int i = 0; i < caseNames.size(); i++) {
           if (i % 2 == 0) { // 每两个groupBox为一行
               QHBoxLayout* rowLayout = new QHBoxLayout();
               contentLayout->addLayout(rowLayout);
           }
           QGroupBox* groupBox = new QGroupBox(caseNames[i], &tab1);
           groupBox->setFixedSize(200, 50);
           QVBoxLayout* groupBoxLayout = new QVBoxLayout(groupBox);
           groupBox->setLayout(groupBoxLayout);
           QCheckBox* checkBox = new QCheckBox(("Enabled"), groupBox);
           checkBox->setChecked(true);
           groupBoxLayout->addWidget(checkBox);
           QHBoxLayout* rowLayout = dynamic_cast<QHBoxLayout*>(contentLayout->itemAt(contentLayout->count() - 1)->layout());
           rowLayout->addWidget(groupBox);
       }
       scrollArea->setWidget(contentWidget); // 将内容窗口设置为滚动区域的子控件
       mainLayout->addWidget(&tabWidget);
       mainLayout->addWidget(scrollArea); // 将滚动区域添加到主布局中
    page->setLayout(mainLayout);
    page->show();
    return a.exec();
}

问题解决效果

到此这篇关于C++ Qt实现动态增加垂直滚动条的文章就介绍到这了,更多相关C++ Qt动态增加垂直滚动条内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈C++反向迭代器的设计

    浅谈C++反向迭代器的设计

    本文主要介绍了浅谈C++反向迭代器的设计,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • C语言数据结构二叉树之堆的实现和堆排序详解

    C语言数据结构二叉树之堆的实现和堆排序详解

    堆是计算机科学中一类特殊的数据结构的统称,通常是一个可以被看做一棵完全二叉树的数组对象。而堆排序是利用堆这种数据结构所设计的一种排序算法。本文将详细介绍堆的实现和堆排序,需要的可以参考一下
    2022-04-04
  • C++ cmake实现日志类的示例代码

    C++ cmake实现日志类的示例代码

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。本文就来利用cmake实现日志类,感兴趣的小伙伴可以了解一下
    2023-03-03
  • Qt控件之QPushButton使用及技巧

    Qt控件之QPushButton使用及技巧

    QPushButton类是Qt中用于创建按钮的控件类,它继承自QAbstractButton类,本文就来介绍一下Qt控件之QPushButton使用及技巧,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 如何在C语言的宏中使用类型关键字

    如何在C语言的宏中使用类型关键字

    如何在C语言的宏中使用类型关键字呢?以下是实现方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • Qt音视频开发之通用监控布局控件的实现

    Qt音视频开发之通用监控布局控件的实现

    这篇文章主要为大家详细介绍了如何利用Qt开发一个通用的监控布局控件,文中的示例代码讲解详细,对我们学习Qt开发有一定的帮助,需要的可以参考一下
    2023-01-01
  • C++实现的泛型List类分享

    C++实现的泛型List类分享

    这篇文章主要介绍了C++实现的泛型List类分享,参考C#的List功能实现,需要的朋友可以参考下
    2014-07-07
  • 浅析C/C++变量在内存中的分布

    浅析C/C++变量在内存中的分布

    变量在内存地址的分布为:堆-栈-代码区-全局静态-常量数据。同一区域的各变量按声明的顺序在内存的中依次由低到高分配空间(只有未赋值的全局变量是个例外)
    2013-09-09
  • C语言数据存储归类介绍

    C语言数据存储归类介绍

    使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么
    2022-08-08
  • C语言用递归函数实现汉诺塔

    C语言用递归函数实现汉诺塔

    大家好,本篇文章主要讲的是C语言用递归函数实现汉诺塔,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论