2014-09-13 4 views
0

Qt에서 처음부터 스크롤바 컨트롤을 만들고 수직 스크롤 막대에 슬라이더 중심 위치를 계산했습니다. 스크롤 막대는 편집 상자에 연결되고 선을 추가하면 슬라이더가 내려갑니다. 슬라이더는 단지 작은 빨간 원입니다.스크롤 막대 로그 동작

문제는 이제 많은 줄을 추가하는 동안 (Enter 키를 계속 눌러서) 슬라이더가 결국 막대의 끝에 도달하여 더 이상 볼 수없는 곳을 넘어선다는 것입니다.

메모장에 많은 수의 개행 문자를 삽입하려고하면 슬라이더가 점점 더 느려지고 느려집니다 (작아 지거나 작게 됨).

어떻게하면 슬라이더의 위치와 동일하게 수행 할 수 있습니까? 명확하게하기 : 내 사용자 지정 스크롤바에서 "로그와 비슷한 동작"을 어떻게 수행 할 수 있습니까? 즉 많은 수의 개행을 삽입 할 때 슬라이더를 느리게하고 느리게 만드는 방법 (

+1

여기서 문제는 텍스트가 변경 될 때 최대 줄 수를 업데이트하지 않는다는 것입니다. 스크롤바의 위치는'available_height * current_line/max_lines'와 같아야합니다. 여기서'max_lines'는 항상 텍스트 상자에있는 것과 동기화되어야합니다. – Rufflewind

+0

그건 내 문제를 해결, 감사합니다! 대답 해 주면 받아 들일거야. – Dean

답변

1

) 텍스트가 변경 될 때 최대 줄 수를 업데이트하지 않는 것이 문제입니다. 스크롤바의 위치는해야한다 같음 : max_lines항상 텍스트 상자에 무엇이와 동기화에 보관해야합니다

available_height * current_line/max_lines 

. 이렇게하면 비율 current_line/max_lines이 결코 1을 초과하지 않으므로 스크롤 막대의 위치가 available_height을 결코 초과하지 않습니다.