Qt中QScrollArea的用法---滚动区

范例

//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QScrollArea>
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
    QScrollArea *scrollArea;//滚动区
    QWidget *scrollWidget;//滚动区界面

};

#endif // WIDGET_H

//widget.cpp
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    scrollArea = new QScrollArea(this);
    scrollArea->setGeometry(10,10,400,600);
//    scrollArea->setFrameShape(QFrame::NoFrame);//无边框
//    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//隐藏垂直滚动条
//    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//隐藏水平滚动条

    scrollWidget = new QWidget();
    scrollWidget->setGeometry(0,0,500,1000);//scrollWidget要比scrollArea大才能出现滚动条
    scrollArea->setWidget(scrollWidget);
    //setWidget()里面也可以放Label,这样就可以实现:当一张Label里的图片太大,可以进行滑动滚动条进行查看。
}

Widget::~Widget()
{

}

在这里插入图片描述

范例—进阶

实现当滚动条滑到底,界面变跟着变大

//widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QScrollArea>
#include <QScrollBar>
#include <QDebug>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
    QScrollArea *scrollArea;//滚动区
    QWidget *scrollWidget;//滚动区界面
private slots:
    void slot_scroolWidget(int);
};

#endif // WIDGET_H
//widget.cpp
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    scrollArea = new QScrollArea(this);
    scrollArea->setGeometry(10,10,400,600);
//    scrollArea->setFrameShape(QFrame::NoFrame);//无边框
//    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//隐藏垂直滚动条
//    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//隐藏水平滚动条

    scrollWidget = new QWidget();
    scrollWidget->setGeometry(0,0,500,1000);//scrollWidget要比scrollArea大才能出现滚动条
    scrollArea->setWidget(scrollWidget);
	//setWidget()里面也可以放Label,这样就可以实现:当一张Label里的图片太大,可以进行滑动滚动条进行查看。

    connect(scrollArea->verticalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(slot_scroolWidget(int)));

}

Widget::~Widget()
{

}

void Widget::slot_scroolWidget(int value)
{
    qDebug()<<value;
    if(value == scrollArea->verticalScrollBar()->maximum()){
        scrollWidget->setFixedSize(scrollWidget->width(),scrollWidget->height() + 50);
        qDebug()<<"滑到底了!";
    }

}

发布了29 篇原创文章 · 获赞 52 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_42250189/article/details/105185024
今日推荐