gpt4 book ai didi

c++ - 如何为内容不断变化的 ListView 显示滚动条?

转载 作者:行者123 更新时间:2023-11-28 08:28:59 25 4
gpt4 key购买 nike

我有一个类似 ListView 的控件,它显示各种高度的项目列表。列表的内容和项目的高度可以改变——后台线程正在填充列表并计算每个项目的布局,甚至可能在用户滚动内容时。这让我想到了我的问题:如何为这个 View 显示一个有用的垂直滚动条?我见过这样的情况(尤其是网络浏览器),当用户拖动 slider 时, slider 从鼠标光标“跳开”,这是底层内容高度增加的结果。我不想这样。

到目前为止

  1. 代替表示相对于内容高度的视口(viewport)高度的 slider ,也许它可以表示时间轴中的一个点? (项目按时间戳排序)。这至少可以防止滚动条在计算项目布局时发生变化。

  2. 完全摆脱滚动条并使用像 Picasa 中使用的那样的向前/向后摇杆开关( slider 向上或向下拉得越远, View 滚动得越快,直到用户释放 slider ).如果我走这条路,你有什么控制可以推荐吗?

我正在使用 Qt,但这通常适用于 UI 设计。

最佳答案

IMO 经典滚动条的根本问题在于,由于背景填充,有效范围正在发生变化 - 因此,滚动条位置的含义发生变化。

如果您可以预测所有项目,您仍然可以提供滚动条并用“正在加载...”替换未知项目。

否则,摇杆(这是官方名称吗?)将是下一个最好的选择。

但是,由于您有专用的刻度(时间轴),因此最好使用单独的按钮来跳转专用时间(例如,一分钟、一小时、一天......)。要获得更漂亮的外观,您可以创建一个带有“热”区域的摇杆,该区域在特定时间内跳跃,而其间的区域是插值的(线性或对数,具体取决于要覆盖的比例)。

即这条线(只画“向后”的一半):

--------------------------
|##|XXXXXXX|##|XXXXXXX|##|
--------------------------
-1h -1m -1s

关于c++ - 如何为内容不断变化的 ListView 显示滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com