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语言枚举类型enum的用法及应用实例

    c语言枚举类型enum的用法及应用实例

    enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合,这篇文章主要给大家介绍了关于c语言枚举类型enum用法及应用的相关资料,需要的朋友可以参考下
    2021-07-07
  • C++带头双向循环链表超详细解析

    C++带头双向循环链表超详细解析

    带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单
    2022-03-03
  • OpenCV图像旋转Rotate的详细介绍

    OpenCV图像旋转Rotate的详细介绍

    这篇文章主要介绍了OpenCV图像旋转Rotate,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C语言数据结构之栈与队列的相互实现

    C语言数据结构之栈与队列的相互实现

    这篇文章主要为大家详细介绍了如何利用C语言相互实现数据结构中的栈与队列,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-07-07
  • C语言使用链表实现学生籍贯管理系统

    C语言使用链表实现学生籍贯管理系统

    这篇文章主要为大家详细介绍了C语言使用链表实现学生籍贯管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 输入3个字符串,将它们按照字母由大到小排序(示例代码)

    输入3个字符串,将它们按照字母由大到小排序(示例代码)

    我们可以用string方法定义字符串变量。以下是具体实现代码。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • C/C++指针与内存管理图文详解

    C/C++指针与内存管理图文详解

    这篇文章主要为大家详细介绍了C/C++指针与内存管理,使用文图并叙的方式,文中图片介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C++ 中同名函数的实现原理与使用(函数重载)

    C++ 中同名函数的实现原理与使用(函数重载)

    本文详细介绍了函数重载在C++中的实现原理、使用规则、适用场景及优势,并提供了避坑指南,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • C语言中位域的使用详解

    C语言中位域的使用详解

    位域是C语言中的一种高级功能,允许程序员为结构体的成员分配特定数量的位,本文主要为大家介绍了位域的使用以及优缺点,希望对大家有所帮助
    2023-07-07
  • visual studio 建立dll类型工程、控制台程序

    visual studio 建立dll类型工程、控制台程序

    这篇文章主要介绍了visual studio 建立dll、控制台类型工程的相关知识,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05

最新评论