Qt 4.7.4 C ++ QScrollBar - 使用QStyle设置滑块的大小

时间:2012-07-08 19:42:28

标签: c++ linux qt

我已经尝试过几个方法让QScrollBar的滑块根据singleSteps()的数量改变大小。我希望stepSize()为~1。

以下链接让我最接近,但我似乎无法让它发挥作用。

http://www.qtcentre.org/threads/2133-QScrollBar-custom-slider-s-size

我需要做些什么才能让滑块尺寸发生变化?我会发布代码,但是就像我上面说的那样,我尝试了很多不同的尝试,我想清理一下我的平板,看看如何更改滑块尺寸的一个很好的例子。

1 个答案:

答案 0 :(得分:1)

通常,滑块的大小应该表示滚动内容的可见部分的大小。这就是QAbstractSlider的API旨在实现的目标。

如果要将可见部分的大小锁定为内容的非整数整体大小的整数倍,那么接近它的惯用方法是将滚动条的输出重新缩放非整数因子height / (maximum() + pageStep())。文档的逻辑高度(长度)映射到maximum() + pageStep()。您当然可以将singleStep()设置为等于pageStep()

鉴于某些numStripsheight,请按以下步骤操作:

int numStrips;
qreal height;

int page = qRound(height/numStrips);
int max = (numStrips - 1) * page;

scrollBar->setMinimum(0);
scrollBar->setMaximum(max);
scrollBar->setPageStep(page);
scrollBar->setSingleStep(page);

qreal strip = scrollBar->value() * height / max;