我已经尝试过几个方法让QScrollBar的滑块根据singleSteps()的数量改变大小。我希望stepSize()为~1。
以下链接让我最接近,但我似乎无法让它发挥作用。
http://www.qtcentre.org/threads/2133-QScrollBar-custom-slider-s-size
我需要做些什么才能让滑块尺寸发生变化?我会发布代码,但是就像我上面说的那样,我尝试了很多不同的尝试,我想清理一下我的平板,看看如何更改滑块尺寸的一个很好的例子。
答案 0 :(得分:1)
通常,滑块的大小应该表示滚动内容的可见部分的大小。这就是QAbstractSlider
的API旨在实现的目标。
如果要将可见部分的大小锁定为内容的非整数整体大小的整数倍,那么接近它的惯用方法是将滚动条的输出重新缩放非整数因子height / (maximum() + pageStep())
。文档的逻辑高度(长度)映射到maximum() + pageStep()
。您当然可以将singleStep()
设置为等于pageStep()
。
鉴于某些numStrips
和height
,请按以下步骤操作:
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;