QScrollArea qt滚动区域的简单使用

QScrollArea 最主要的方法在于setWidget(QWidget *widget)
简单来说就是设置画布的意思,通常我们在使用的时候需要先把需要的控件放到一个画布里。而QScrollArea 就类似于我们拿着一个放大镜去观察这个画布。所以想要出现滚动条,画布的大小一定要比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 的大小会与屏幕大小近似。
   所以它的大小小于画布的大小!*/

最后,我们还可以对滚动条禁用。例如禁用横向滚动条:

    scroLLArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

效果图请添加图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值