Qt中如何获取滚动条的实际宽度?

问题描述 投票:0回答:3

我正在尝试制作一个自定义小部件,它基本上是一堆文本编辑,右侧有一个垂直滚动条。为了确定小部件的大小,我必须找到滚动条的宽度,因为 texedits 几何形状取决于它。只需调用scroll_bar->width();对于新创建的垂直条,返回 101,这显然是错误的。

那么,Qt 3.2.3 有没有办法正确确定垂直滚动条宽度?

qt scrollbar
3个回答
28
投票
int w = qApp->style()->pixelMetric(QStyle::PM_ScrollBarExtent);

1
投票

我也发现了

vsb->sliderRect().width(); 

这恰好是正确的,但在代码中看起来很糟糕,因为我对滑块本身不感兴趣。


0
投票

如果您使用

scrollArea
并在使用 Hank 的答案时使滚动条的宽度短了几个像素,请尝试以下操作:

int scrollBarWidth = qApp->style()->pixelMetric(QStyle::PM_ScrollBarExtent);
scrollBarWidth += ui->scrollArea->width() - ui->scrollAreaWidgetContents->width();

scrollArea
scrollAreaWidgetContents
之间的尺寸似乎有一点小小的差异。

© www.soinside.com 2019 - 2024. All rights reserved.