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语言实现五子棋对战系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++异步数据交换实现方法介绍

    C++异步数据交换实现方法介绍

    这篇文章主要介绍了C++异步数据交换实现方法,异步数据交换,除了阻塞函数 send() 和 recv() 之外,Boost.MPI 还支持与成员函数 isend() 和 irecv() 的异步数据交换
    2022-11-11
  • 简要对比C语言中的truncate()函数与ftruncate()函数

    简要对比C语言中的truncate()函数与ftruncate()函数

    这篇文章主要介绍了C语言中的truncate()函数与ftruncate()函数的简要对比,注意其之间的区别,需要的朋友可以参考下
    2015-09-09
  • C语言数据结构之堆、堆排序的分析及实现

    C语言数据结构之堆、堆排序的分析及实现

    堆是一个近似完全二叉树的结构,并同时满足堆积的性质,下面这篇文章主要给大家介绍了关于C语言数据结构之堆、堆排序的分析及实现的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • C++中的整型

    C++中的整型

    这篇文章我们来聊聊C++中的整型,整型即整数,与小数对应。许多语言只能表示一种整型(如Python),而在C++当中根据整数的范围提供了好几种不同的整型,下面文章我们就来看看具体是哪几种,需要的朋友也可以参考一下
    2021-11-11
  • C++实现LeetCode(77.Combinations 组合项)

    C++实现LeetCode(77.Combinations 组合项)

    这篇文章主要介绍了C++实现LeetCode(Combinations 组合项),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • HDOJ 1443 约瑟夫环的最新应用分析详解

    HDOJ 1443 约瑟夫环的最新应用分析详解

    本篇文章是对HDOJ 1443 约瑟夫环的最新应用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++浅析类与对象的基础

    C++浅析类与对象的基础

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2022-05-05
  • 使用C语言实现珠玑妙算Mastermind小游戏

    使用C语言实现珠玑妙算Mastermind小游戏

    这篇文章主要介绍了使用C语言实现珠玑妙算Mastermind小游戏,这是一款益智类多人游戏游戏,非常有趣,需要的朋友可以参考下
    2023-03-03
  • C++ 如何实现多线程与线程同步

    C++ 如何实现多线程与线程同步

    多线程中的线程同步可以使用,CreateThread,CreateMutex 互斥锁实现线程同步,通过临界区实现线程同步,Semaphore 基于信号实现线程同步,CreateEvent 事件对象的同步,以及线程函数传递单一参数与多个参数的实现方式。
    2021-06-06

最新评论