QT控件 — QScrollArea

本文介绍了在Qt中如何使用ScrollArea控件来显示大图片,并通过代码实现对齐方式及可见性的控制。探讨了ensureVisible和ensureWidgetVisible函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子:在窗体上显示一张大图片,然后使用滚动条来调节。

在窗体上添加控件 Scroll Area,如下图所示
在这里插入图片描述
需要说明的是,控件 Scroll Area 也相当于是一个容器。

后面主要说一下这个属性
在这里插入图片描述
在窗体上在放一个Label作为图片的容器。之后点击加载所要展示的大图片。
在这里插入图片描述
将label控件拖进scrollArea这个容器中,点击运行,会发现,并没有效果。
在这里插入图片描述
这是因为布局的原因。
在这里插入图片描述
将其布置为水平布局,
在这里插入图片描述
会发现
在这里插入图片描述
运行代码,也是这样。
除了上面所说的打破布局和拖动Label到scrollArea内之外,还可以直接使用代码

ui->scrollArea->setWidget(ui->label);

运行结果也是一样。

下面,再来说下上面提到的属性。

它是可以自动调节它内部控件的对齐方式,对于大于它的控件或图片,可能没有效果。这里使用代码来实现,试下。

ui->scrollArea->setWidget(ui->pushButton);

在没勾选时,
在这里插入图片描述
勾选时,
在这里插入图片描述
在这里插入图片描述
其他对齐方式也可以尝试下。

下面再介绍函数 ensureVisible 和 ensureWidgetVisible

首先,是 ensureWidgetVisible 这个函数,添加个按键,转到槽函数,试下。

void Widget::on_pushButton_clicked()
{
    ui->scrollArea->ensureWidgetVisible(ui->label);
}

需要注意,需要将该属性
在这里插入图片描述
勾选。运行效果如下,
请添加图片描述
看下 ensureWidgetVisible 这个函数的介绍。
在这里插入图片描述
滚动区域的内容,这样 QScrollArea::widget() 的 childWidget 就可以在视口内看到,通过 xmargin 和 ymargin 以像素为单位指定边缘。如果指定的点如果无法到达指定的点,则将内容滚动到最近的有效位置。两个边距的默认值都是50像素。

(没什么效果,不太明白这个函数什么意思)

转而去看 ensureVisible 这个函数。

链接: https://www.bilibili.com/video/BV1Gh411h7Nb/?spm_id_from=333.880.my_history.page.click&vd_source=b91967c499b23106586d7aa35af46413

做个联动,

拖个控件
在这里插入图片描述
在这里插入图片描述
调整下范围,调大一些。
在这里插入图片描述
在这里插入图片描述
使用下图信号(选参数为 int 合适)
在这里插入图片描述

void Widget::on_spinBox_valueChanged(const QString &arg1)
{
    ui->scrollArea->ensureVisible(arg1.toInt(), 100);//直接选int类型,不用转
}

运行效果如下,
在这里插入图片描述
大约在260左右开始移动,应该是加了 xmargin = 50 之后得到的结果。
在这里插入图片描述

这两个函数不好理解。不太好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuechanba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值