SliderMoveToMouseClickEventFilter
Qt Base Class: QObject
Signature: QObject(self, parent: Optional[PySide6.QtCore.QObject] = None) -> None
Base classes
Name |
Children |
Inherits |
BaseEventFilter prettyqt.eventfilters.baseeventfilter
|
|
|
⋔ Inheritance diagram
graph TD
1473367045264["eventfilters.SliderMoveToMouseClickEventFilter"]
1473367044288["eventfilters.BaseEventFilter"]
1473299782816["core.Object"]
1473299815024["core.ObjectMixin"]
140713234304496["builtins.object"]
1473288842240["QtCore.QObject"]
1473291690208["Shiboken.Object"]
1473367044288 --> 1473367045264
1473299782816 --> 1473367044288
1473299815024 --> 1473299782816
140713234304496 --> 1473299815024
1473288842240 --> 1473299782816
1473291690208 --> 1473288842240
140713234304496 --> 1473291690208
🛈 DocStrings
Bases: BaseEventFilter
Source code in prettyqt\eventfilters\slidermovetomouseclickeventfilter.py
| class SliderMoveToMouseClickEventFilter(eventfilters.BaseEventFilter):
ID = "slider_move_to_mouse_click"
def _move_to_mouse_position(self, scrollbar: widgets.QScrollBar, point: core.QPoint):
opt = widgets.StyleOptionSlider()
scrollbar.initStyleOption(opt)
control = scrollbar.style().hitTestComplexControl(
CC.CC_ScrollBar, opt, point, scrollbar
)
if control not in {SC.SC_ScrollBarAddPage, SC.SC_ScrollBarSubPage}:
return
# scroll here
gr = scrollbar.style().subControlRect(
CC.CC_ScrollBar, opt, SC.SC_ScrollBarGroove, scrollbar
)
sr = scrollbar.style().subControlRect(
CC.CC_ScrollBar, opt, SC.SC_ScrollBarSlider, scrollbar
)
if scrollbar.orientation() == constants.Orientation.Horizontal:
pos = point.x()
slider_length = sr.width()
slider_min = gr.x()
slider_max = gr.right() - slider_length + 1
if scrollbar.layoutDirection() == constants.LayoutDirection.RightToLeft:
opt.upsideDown = not opt.upsideDown
else:
pos = point.y()
slider_length = sr.height()
slider_min = gr.y()
slider_max = gr.bottom() - slider_length + 1
value = widgets.QStyle.sliderValueFromPosition(
scrollbar.minimum(),
scrollbar.maximum(),
pos - slider_min - slider_length // 2,
slider_max - slider_min,
opt.upsideDown,
)
scrollbar.setValue(value)
def eventFilter(self, source: widgets.QScrollBar, event: core.QEvent):
match event.type():
case core.QEvent.Type.MouseMove:
if event.buttons() & constants.MouseButton.LeftButton:
point = event.position().toPoint()
self._move_to_mouse_position(source, point)
case core.QEvent.Type.MouseButtonPress:
if event.button() == constants.MouseButton.LeftButton:
point = event.position().toPoint()
self._move_to_mouse_position(source, point)
return False
|
⌗ Property table
Qt Property |
Type |
Doc |
objectName |
QString |
|