滚动条对数行为

时间:2014-09-13 20:35:45

标签: c++ qt user-interface

我正在从头开始在Qt中创建一个滚动条控件,我设法将滑块中心位置计算为垂直滚动条。滚动条附加到编辑框,添加行使滑块向下。滑块只是一个小红圈。

现在的问题是,在添加大量线条时(通过按住Enter键),滑块最终到达条形的末端并超出它不再可见的位置。

如果您尝试在任何记事本上插入大量换行符,滑块最终会变得越来越慢(除了变得越来越小)。

如何通过滑块的位置完成相同的操作? 为了说清楚:如何使用我的自定义滚动条实现“对数式行为”?即插入大量换行符时如何使滑块变慢(以这种方式使其永远不会到达底部)

1 个答案:

答案 0 :(得分:1)

问题是,当文字发生变化时,您无法更新最大行数。滚动条的位置应该等于:

available_height * current_line / max_lines

max_lines 始终与文本框中的内容保持同步。这可确保比率current_line / max_lines永远不会超过1,因此滚动条的位置永远不会超过available_height