2012-07-08 1 views
0

QScrollBar의 슬라이더에 singleSteps() 수를 기준으로 크기를 변경하려면 여러 가지를 시도했습니다. stepSize()를 ~ 1로하고 싶습니다.Qt 4.7.4 C++ QScrollBar - QStyle을 사용하여 슬라이더 크기 설정

다음 링크는 저에게 가장 가까운 링크를 제공하지만 작동시키지 못합니다. 내가 슬라이더의 크기를 변경하려면 어떻게해야합니까 무엇

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

? 위의 코드에서 여러 가지 시도를 시도했지만 슬레이트를 정리하고 슬라이더 크기를 변경하는 방법에 대한 좋은 예를 보았습니다.

답변

1

일반적으로 슬라이더의 크기는 스크롤 된 내용의 보이는 부분의 크기를 나타냅니다. 그것이 QAbstractSlider의 API가 의도 한 것입니다.

보이는 부분의 크기를 콘텐츠의 정수가 아닌 전체 크기의 정수 배가되도록 잠그고 싶다면 접근법의 관용적 인 방법은 스크롤 막대의 출력을 비 - 정수 인자 height/(maximum() + pageStep()). 문서의 논리적 인 높이 (길이)는 maximum() + pageStep()으로 매핑됩니다. 물론 singleStep()pageStep()과 같게 설정할 수 있습니다.

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; 
+0

내 사용 사례는 이것이다 : 다음과 같이

진행, numStripsheight 일부를 감안할 때. 차트에서 스트립을 추가하거나 제거 할 수있는 스트립 차트가 있습니다. 스트립은 GLWidget 내에서 고유 한 glViewports()로 렌더링됩니다. QScrollBar의 동작을 오버라이드하여 스크롤 수가 스트립 수와 같도록합니다. 즉, singleStep()은 # ofStrips/mHeight로 설정됩니다. 이로 인해 반올림 오류가 발생합니다. 슬라이더의 동적 크기를 조정하여이 중 일부를 시도하고 제거해야합니다. –

+0

이것은 Qt를 사용하고 stepsize에 정수 값을 사용하는 것에 대한 제 해결 방법입니다. –

+0

내 메서드의 다른 문제는 # ofStrips/mHeight <1이면 singleStep()이 0으로 반올림됩니다. 메서드에서이 문제를 어떻게 처리합니까? –