QT QScrollBar Class

QScrollBar小部件提供垂直或水平滚动条

https://doc.qt.io/qt-5/qscrollbar.html

详细说明

滚动条是一种控件,使用户能够访问文档中大于用于显示文档的窗口小部件的部分。它提供了用户在文档中当前位置以及可见文档数量的视觉指示。滚动条通常配有其他控件,可以实现更准确的导航。Qt以适合每个平台的方式显示滚动条。

如果需要在另一个窗口小部件上提供滚动视图,则使用QScrollArea类可能更方便,因为它提供了视口窗口小部件和滚动条。如果需要使用QAbstractScrollArea为专门的小部件实现类似的功能,则QScrollBar很有用;例如,如果您决定子类QAbstractItemView。对于使用滑块控件获取给定范围内的值的大多数其他情况,QSlider类可能更适合您的需求。

滚动条通常包括四个单独的控件:滑块,滚动箭头和页面控件。

  • a.滑块,提供了一种快速转到文档任何部分的方法,但不支持在大型文档中进行精确导航。
  • b.滚动箭头,是按钮,可用于精确导航到文档中的特定位置。对于连接到文本编辑器的垂直滚动条,这些滚动条通常将当前位置上移或下移一个“行”,并少量调整滑块的位置。在编辑器和列表框中,“一行”可能表示一行文本;在图像查看器中,这可能意味着20像素。
  • C.页面控件,是在其上拖动滑块的区域(滚动条的背景)。单击此处将滚动条移向单击一个“页面”。该值通常与滑块的长度相同。

每个滚动条都有一个值,该值指示滑块距滚动条起点的距离。这是通过value()获得的,并通过setValue()进行设置的。此值始终在为滚动条定义的值的范围内,从minimum()maximum()(包括两端)。可以使用setMinimum()和setMaximum()设置可接受值的范围。在最小值时,滑块的顶部边缘(对于垂直滚动条)或左边缘(对于水平滚动条)将在滚动条的顶部(或左侧)。在最大值时,滑块的底部(或右侧)边缘将在滚动条的底部(或右侧)末端。

滑块的长度通常与页面步长有关,通常代表滚动视图中显示的文档区域的比例。Page step是用户按下Page UpPage Down键时值更改的量,并使用setPageStep()进行设置。使用光标键对行步定义的值进行较小的更改,并使用setSingleStep()设置此数量。

请注意,所使用的值的范围与滚动条小部件的实际大小无关。选择范围和页面步长的值时,无需考虑这一点。

为滚动条指定的值范围通常与为QSlider确定的值范围不同,因为需要考虑滑块的长度。如果我们有一个包含100行的文档,而我们在一个小部件中只能显示20行,则我们可能希望构造一个滚动条,其滚动步长为20,最小值为0,最大值为80。给我们一个带有五个“页面”的滚动条。

在许多常见情况下,文档长度,滚动条中使用的值的范围和页面步进之间的关系很简单。滚动条的值范围是通过从代表文档长度的某个值中减去选定的页面步长来确定的。在这种情况下,以下等式很有用:文档长度=最大()-最小()+ pageStep()

 

QScrollBar仅提供整数范围。请注意,尽管QScrollBar可以处理非常大的数字,但当前屏幕上的滚动条无法有效地表示约100,000像素以上的范围。除此之外,用户变得难以使用键盘或鼠标来控制滑块,并且滚动箭头的使用将受到限制。

ScrollBar从QAbstractSlider继承了一组全面的信号:

滚动条可以由键盘控制,但是它的默认focusPolicy()为Qt :: NoFocus。使用setFocusPolicy()启用键盘与滚动条的交互:

  • 向左/向右移动一个水平滚动条一个步骤。
  • 向上/向下移动垂直滚动条仅一步。
  • PageUp向上移动一页。
  • PageDown向下移动一页。
  • Home移至起点(最小)。
  • 结束移动到末尾(最大)。

滑块本身可以通过使用triggerAction()函数来控制,以模拟用户与滚动条控件的交互。如果您有许多使用共同值范围的不同小部件,这将很有用。

大多数GUI样式使用pageStep()值来计算滑块的大小。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QTreeView是Qt框架中的一个控件,用于显示树形结构的数据。QScrollBarQt框架中的一个控件,用于显示滚动。 在给QTreeView添加QScrollBar时,可以通过判断QTreeView的垂直滚动是否可见来确定是否需要进行补偿。如果垂直滚动可见,可以使用rect.setRight(rect.right() - tree->verticalScrollBar()->width())来补偿宽度,使得绘制的内容不会被滚动遮挡。 在自定义派生类MyTreeDelegate的paint函数中,可以通过获取QTreeView的垂直滚动宽度,判断是否可见,并根据需要进行补偿操作。然后使用painter->drawText来绘制文本内容,实现显示rect.right的功能。最后调用QStyledItemDelegate::paint来完成绘制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [QTreeView 一个竖直滚动引起的问题](https://blog.csdn.net/luoshabugui/article/details/103393021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [C++ QT5开发教程](https://download.csdn.net/download/prickly/9673714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值