QT 之自动滚动区QScrollArea

本文介绍了如何使用Qt的QScrollArea组件来创建一个可滚动的视图,展示超过屏幕大小的部件内容。通过在QScrollArea内添加栅格布局,并在代码中动态创建和定位多个按钮,实现了滚动条的出现。同时,详细说明了如何在QtDesigner中直接拖放QScrollArea以及设置其大小和内容。
摘要由CSDN通过智能技术生成

简述

QScrollArea提供了一个滚动视图到另一个部件。

滚动区域用于显示一个画面中的子部件的内容。如果部件超过画面的大小,视图可以提供滚动条,这样就都可以看到部件的整个区域。

Qt Designer设计添加

  1. QScrollArea属于控件容器类,可以直接在ui中拖出来
  2. 添加需要放置的控件到QScrollArea里面,然后栅格布局
    在这里插入图片描述
  3. 栅格以后调整外部大小就可以设定QScrollArea框的大小

在这里插入图片描述

纯代码设计

 	mainLayout = new QVBoxLayout(this);
    mainLayout->setContentsMargins(11, 11, 11, 11);
    
    scroLLArea = new QScrollArea();
    QWidget *scrollAreaWidgetContents = new QWidget(); //创建画布
    
    QScreen *screen = QGuiApplication::primaryScreen();
    QRect rect = screen->availableGeometry();//获取当前屏幕像素大小
    scrollAreaWidgetContents->setFixedWidth(rect.width());
    scrollAreaWidgetContents->setFixedHeight(rect.height() + 1800); //这里设置画布的高度比实际屏幕要大,方便出现滚动条
    //创建多个控件
    int initX = 35;
    int initY = 0;
    int fixSpace = 100;
    int hX = 0;
    int vY = initY;

    for (int i = 1; i < 50; i++)
    {
        if (i % 2 != 0)
        {
            btnButton = new QPushButton(scrollAreaWidgetContents);
            btnButton->move(initX, vY);
            hX = btnButton->x() + btnButton->width() + fixSpace;
        }
        else
        {
            btnButton = new QPushButton(scrollAreaWidgetContents);
            btnButton->move(hX, vY);
            vY += fixSpace;
        }

        btnButton->setText(QString::number(i));

    }
    scroLLArea->setWidget(scrollAreaWidgetContents); //设置画布
    mainLayout->addWidget(scroLLArea);    
    /*在主布局中添加QScrollArea ,
    这时候因为自动布局的关系,
    QScrollArea 的大小会与屏幕大小近似。
   所以它的大小小于画布的大小!*/

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值