0

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

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

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

我需要做什么才能改变滑块大小?我会发布代码,但是就像我上面所说的那样,我尝试了许多不同的尝试,我想清理我的石板,只是看一个如何更改滑块大小的干净示例。

4

1 回答 1

1

通常,滑块的大小应该代表滚动内容的可见部分的大小。这就是QAbstractSliderAPI 的设计目的。

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

给定一些numStripsand 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;
于 2012-07-09T00:37:49.507 回答