This commit is contained in:
2024-04-21 17:30:19 +02:00
parent 6d7accffde
commit 811e3c7f82

View File

@@ -1,8 +1,8 @@
import enum import enum
from PySide6.QtGui import QWheelEvent from PySide6.QtGui import QWheelEvent
from PySide6.QtWidgets import QWidget, QStylePainter, QStyle, QStyleOptionSlider, QSlider, QAbstractSlider from PySide6.QtWidgets import QWidget, QStylePainter, QStyle, QStyleOptionSlider
from PySide6.QtCore import Qt, QSize, QEvent, QRect, QPoint, Signal, QTimer, QElapsedTimer from PySide6.QtCore import Qt, QSize, QEvent, QRect, QPoint, Signal, QTimer
class BigScrollBar(QWidget): class BigScrollBar(QWidget):
@@ -78,32 +78,15 @@ class BigScrollBar(QWidget):
return o return o
## QSize QScrollBar::sizeHint() const
# {
# ensurePolished();
# QStyleOptionSlider opt;
# initStyleOption(&opt);
# int scrollBarExtent = style()->pixelMetric(QStyle::PM_ScrollBarExtent, &opt, this);
# int scrollBarSliderMin = style()->pixelMetric(QStyle::PM_ScrollBarSliderMin, &opt, this);
# QSize size;
# if (opt.orientation == Qt::Horizontal)
# size = QSize(scrollBarExtent * 2 + scrollBarSliderMin, scrollBarExtent);
# else
# size = QSize(scrollBarExtent, scrollBarExtent * 2 + scrollBarSliderMin);
#
# return style()->sizeFromContents(QStyle::CT_ScrollBar, &opt, size, this);
# }
def sizeHint(self): def sizeHint(self):
scroll_bar_extend = self.style().pixelMetric(QStyle.PixelMetric.PM_ScrollBarExtent) scroll_bar_extend: int = self.style().pixelMetric(QStyle.PixelMetric.PM_ScrollBarExtent)
scroll_bar_slider_min = self.style().pixelMetric(QStyle.PixelMetric.PM_ScrollBarSliderMin) scroll_bar_slider_min: int = self.style().pixelMetric(QStyle.PixelMetric.PM_ScrollBarSliderMin)
# print(f"scroll_bar_extend: {scroll_bar_extend}, scroll_bar_slider_min: {scroll_bar_slider_min}") # print(f"scroll_bar_extend: {scroll_bar_extend}, scroll_bar_slider_min: {scroll_bar_slider_min}")
# for vertial # for vertical
size = QSize(scroll_bar_extend, scroll_bar_extend * 2 + scroll_bar_slider_min) size = QSize(scroll_bar_extend, scroll_bar_extend * 2 + scroll_bar_slider_min)
o = self.style_options() opts = self.style_options()
return self.style().sizeFromContents(QStyle.ContentsType.CT_ScrollBar, o, size, self) return self.style().sizeFromContents(QStyle.ContentsType.CT_ScrollBar, opts, size, self)
def event(self, event: QEvent) -> bool: def event(self, event: QEvent) -> bool:
# print(f"event type: {event.type()}") # print(f"event type: {event.type()}")
@@ -225,9 +208,9 @@ class BigScrollBar(QWidget):
QStyle.SubControl.SC_ScrollBarSlider, self) QStyle.SubControl.SC_ScrollBarSlider, self)
# only for vertical scrollbars # only for vertical scrollbars
slider_length = sr.height(); slider_length = sr.height()
slider_min = gr.y(); slider_min = gr.y()
slider_max = gr.bottom() - slider_length + 1; slider_max = gr.bottom() - slider_length + 1
val = QStyle.sliderValueFromPosition(opt.minimum, opt.maximum, pos - slider_min, val = QStyle.sliderValueFromPosition(opt.minimum, opt.maximum, pos - slider_min,
slider_max - slider_min, opt.upsideDown) slider_max - slider_min, opt.upsideDown)