我有QListWidget,我想要一个带有Image的透明滚动条。 最初,滚动条应该只在它应该显示的滚动上隐藏。 我如何在Qt中实现这一目标? 欢迎任何示例或想法。 我如何将图像应用于Listview滚动条。
答案 0 :(得分:1)
在Qt中,您可以通过以下三个方面来控制大多数小部件的滚动条:
为了能够跟踪用户如何与您的QListWidget或任何Widget进行交互,您需要对其进行子类化并实现QWheelEvent和QKeyEvent中的虚拟方法。
滚动通常是使用鼠标滚轮和键盘箭头键进行的,有时是向上翻页和向下翻页以及空格键。我没有用QListWidget做很多事情,但你应该仔细检查哪些键盘事件/鼠标事件触发滚动。
即使您将窗口小部件的ScrollBarPolicies设置为Qt :: ScrollBarAlwaysOff,这些事件也会导致滚动事件。
首先你应该放入你的小部件的构造函数
this->setVerticalScrollBar(Qt::ScrollBarAlwaysOff);
this->setHorizontalScrollBar(Qt::ScrollBarAlwaysOff);
所以你只需要为小部件设置setMouseTracking(true)(以便它跟踪的不仅仅是点击次数)并至少重新实现wheelEvent(),当轮子事件发生时,设置垂直/水平滚动条策略为true并在您的小部件上调用更新。
如果要在开始滚动后的几毫秒后关闭滚动条,则需要在构造函数中为子类窗口小部件创建一个QTimer,并将其连接到设置滚动条策略的插槽。超时。然后每次用户执行wheelEvent()时启动/重启该计时器。
就将图像应用于ListView Scrollbar而言,如果要在其上实际放置图像或更改其外观,则应查看QAbstractScrollBar的子类化。如果您尝试将带有不同图标的按钮放在滚动条的位置,也可以设置一些工具按钮。