QStyle Scroll Bars 样式设计(十一)
QScrollBars的样式结构:
QScrollBar只需创建其样式选项,然后绘制CC_ScrollBar。 有些样式使用PE_PanelButtonBevel绘制添加页面和子页面的背景,还使用指示器箭头在嵌套指示器和前一行指示器中绘制箭头;
我们没有将它们包含在树中,因为它们的使用取决于个人风格。 样式的PM_MaximumDragDistance是鼠标可以从滚动条的边界移动并仍然移动手柄的最大距离(以像素为单位)。
如下是Java样式的滚动条的图像:
您可能会注意到,滚动条与Java略有不同,因为它有两个对齐指示器。 我们这样做是为了显示如何为单个子控件具有两个单独的边界矩形。
滚动条是完全由java样式实现的小部件的示例-图形中均不涉及QWindowsStyle和QCommonStyle。
我们来看看滚动条可以在样式选项上设置的不同状态:
State | State Set When |
---|---|
State_Horizontal | 滚动条是水平的 |
QScrollBar的样式选项是QStyleOptionSlider。 下表列出了其成员。 所有QAbstractSliders都使用该选项。 我们仅在此处描述与滚动条相关的成员。
Member | Content |
---|---|
maximum | 滚动条的最大值 |
minimum | 滚动条的最小值 |
notchTarget | 槽口之间的像素数 |
orientation |
Qt :: Orientation枚举的值,它指定滚动条是垂直还是水平 |
pageStep | 在页面上增加或减少滑块值的数量(相对于滑块的大小及其值范围) |
singleStep | 单(或行)步增加或减少滑块值的数字 |
sliderValue | 滑块的值 |
sliderPosition | 滑块手柄的位置。 如果滚动条是QAbstractSlider :: tracking,则此值与liderValue相同。 如果不是,则滚动条在鼠标释放手柄之前不会更新其值。 |
upsideDown | 保持滚动条增加其值的方向。 用于所有抽象滑块的QStyleOption :: direction。 |
Slider 滑块样式
在计算滑块大小提示时,将从样式中查询PM_SliderTickness和PM_SliderLength。 与滚动条一样,如果鼠标位于滑块边界的PM_MaximumDragDistance内,则QSlider仅允许用户移动手柄。
绘制自身时,它会创建样式选项并使用CC_Slider调用drawComplexControl()
我们还显示了Java样式的滑块图片。 由于所有绘制均在CC_Slider中完成,因此我们显示了子元素的边界矩形。
QSlider像所有QAbstractSliders一样使用QStyleOptionSlider。 我们列出了影响QSlider的成员表:
Member | Content |
---|---|
maximum | 滑块的最大值 |
minimum | 滑块的最小值 |
notchTarget | 这是每个槽口之间的像素数 |
orientation | 一个Qt :: Orientation枚举值,它给出滑块是垂直还是水平。 |
pageStep | 滑块值中的一个数字,用于增加或减少页面步长 |
singleStep | 单(或行)步增加或减少滑块值的数字。 |
sliderValue | 滑块的值。 |
sliderPosition | 以滑块值形式给出的滑块位置。 如果滑块正在跟踪,则此值等于sliderValue; 如果不是,则在用鼠标释放手柄之前,滑块值不会改变。 |
upsideDown | 对于所有抽象滑块,都使用此成员代替QStyleOption :: direction。 |
注意,滑块不使用方向进行反向布局; 它使用upsideDown。