三代码使用QScrollArea

QScrollArea是QT封装好的一个滑动界面类

构造函数如下:

 

指定一个父对象就行,构造函数提供一个滑动的区域,但是这个区域里是没有内容的,构造函数介绍里面让我们看setWidget()这个函数,该函数添加滑动的widget,我们其他的小控件放到这个滑动widget上

 

 

这里有个一定要注意的点,一定要先给widget添加布局后再调用setWidget(),不然啥也显示不了


示例代码如下:

#include "widget.h"
#include "ui_widget.h"

#include <QScrollArea>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->resize(800,600);
    QScrollArea *scrollArea = new QScrollArea(this);
    scrollArea->resize(800,600);
    QWidget *widget = new QWidget;
    QGridLayout *layout = new QGridLayout(widget);

    for(int i = 0; i < 200; ++i)
    {
        QPushButton *btn = new QPushButton(QString("按键%1").arg(i),widget);
        btn->setMinimumSize(200, 200);
        layout->addWidget(btn, i / 2, i % 2);
    }
    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    scrollArea->setWidget(widget);
}
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
是隐藏其水平和垂直滚动条,参数如下

 

最终的效果:

 

使用鼠标滚轮即可上下滑动

 想要动态添加控件到widget中,widget能自动变大,需要设置

setWidgetResizable(true)

 

posted @ 2021-06-28 12:01  陈和权  阅读(519)  评论(0编辑  收藏  举报