Qt之容器控件(QStrollArea)

简述

QScrollArea类提供了一个窗口小部件的滚动视图。

滚动区域用于显示框架内子窗口小部件的内容。如果窗口小部件超出框架的大小,则视图可以提供滚动条,以便可以查看子窗口小部件的整个区域。子窗口小部件必须使用setWidget()指定。

QScrollArea中的很多功能继承自QAbstractScrollArea。

功能详述

滚动条的外观取决于当前设置的滚动条策略。您可以使用QAbstractScrollArea继承的功能来控制滚动条的外观。

例如,可以设置QAbstractScrollArea :: horizontalScrollBarPolicy和QAbstractScrollArea :: verticalScrollBarPolicy属性。或者,如果希望在滚动区域的内容发生变化时动态调整滚动条,则可以使用horizontalScrollBar()和verticalScrollBar()函数(使您能够访问滚动条),并使用QScrollBar :: setValue()函数更改滚动区域的内容。

您可以使用widget()函数检索子控件。可以使用setWidgetResizable()函数将视图调整大小。可以使用setAlignment()指定窗口小部件的对齐方式。

有两个便捷功能:ensureVisible() 和 ensureWidgetVisible(),通过确保在需要时滚动内容,可以确保内容的特定区域在视口中可见。


使用滚动区域显示自定义窗口小部件的内容时,重要的是确保将子窗口小部件的默认大小设置为合适的值。
如果将标准QWidget用于子窗口小部件,则可能有必要调用QWidget :: setMinimumSize()以确保在滚动区域内正确显示窗口小部件的内容。

如果滚动区域用于显示包含布局的窗口小部件的内容,则意识到布局的大小策略也将确定窗口小部件的大小是非常重要的。这对于了解是否打算动态更改布局的内容特别有用。在这种情况下,将布局的大小约束属性设置为一个对布局的最小和/或最大尺寸提供约束的属性(例如QLayout :: SetMinAndMaxSize)将导致滚动区域的大小在每当滚动条的内容被更新时更新。

用法

效果

源码

    QLabel *imageLabel = new QLabel;
    imageLabel->setScaledContents(true);
    QImage image(":/picture/qqhead.png");
    imageLabel->setPixmap(QPixmap::fromImage(image));

    QScrollArea *scrollArea = new QScrollArea;
    scrollArea->setBackgroundRole(QPalette::Dark);
    scrollArea->setWidget(imageLabel);

    QGridLayout *gridLayout = new QGridLayout;
    gridLayout->addWidget(scrollArea);

    this->setLayout(gridLayout);
    this->resize(200, 200);

重点提要: 用setWidget来设置控件到QScrollArea中。

常用设置

设置内部控件对齐

默认对齐在左上角,如下所示

可以通过setAlignment来设置

scrollArea->setAlignment(Qt::AlignHCenter);

效果

设置QScrollArea是否可调整内部控件尺寸

默认情况下,QScrollArea不会对内部控件的大小做出任何调整,如果内部控件大小改变了,QScrollArea要调整自身以适应内部控件,设置方法如下

scrollArea->setWidgetResizable(true);

默认情况下

调整后

设置滚动条位置

这个方法继承自QAbstractStrollArea,用于设置滚动条在什么情况下可见,三种情况如下所示

常量描述
Qt::ScrollBarAsNeeded0当需要的时候出现滚动条
Qt::ScrollBarAlwaysOff1滚动条总是关闭
Qt::ScrollBarAlwaysOn2滚动条总是出现
    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

效果

如上所示,水平滚动条总是可见,垂直滚动条总是不可见。

总结

上面的内容简要介绍了QStrollArea的基本用法,以及常用设置,更多功能可以参考它的父类QAbstractScrollArea,并结合官方案例中的Image Viewer Example进行学习与理解。

引用

[1] Qt助手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值