def copyOptions(self): opt = QStyleOptionSlider() opt.initFrom(self._slider) opt.maximum = self._slider.maximum() opt.minimum = self._slider.minimum() opt.orientation = self._slider.orientation() opt.pageStep = self._slider.pageStep() opt.singleStep = self._slider.singleStep() return opt
def paintEvent(self, event: QPaintEvent) -> None: """ Render the scrollbars using Qt's draw control, and render the frame elements dependent on whether the partner horizontal / vertical scrollbar is also visible """ painter = QStylePainter(self) if self.orientation() == Qt.Vertical: painter.translate(0.0, self.frame_width) else: painter.translate(self.frame_width, 0.0) option = QStyleOptionSlider() option.initFrom(self) option.maximum = self.maximum() option.minimum = self.minimum() option.pageStep = self.pageStep() option.singleStep = self.singleStep() option.sliderPosition = self.sliderPosition() option.orientation = self.orientation() if self.orientation() == Qt.Horizontal: option.state |= QStyle.State_Horizontal rect = self.renderRect() option.rect = rect option.palette = self.palette() option.subControls = ( QStyle.SC_ScrollBarAddLine | QStyle.SC_ScrollBarSubLine | QStyle.SC_ScrollBarAddPage | QStyle.SC_ScrollBarSubPage | QStyle.SC_ScrollBarFirst | QStyle.SC_ScrollBarLast ) painter.fillRect( option.rect, QApplication.palette().window().color().darker(102) ) self.style().drawComplexControl(QStyle.CC_ScrollBar, option, painter) # Highlight the handle (slider) on mouse over, otherwise render it as normal option.subControls = QStyle.SC_ScrollBarSlider if option.state & QStyle.State_MouseOver == QStyle.State_MouseOver: palette = self.palette() if sys.platform == "win32": color = self.palette().base().color() else: color = self.palette().button().color().lighter(102) palette.setColor(QPalette.Button, color) option.palette = palette self.style().drawComplexControl(QStyle.CC_ScrollBar, option, painter) # Render the borders painter.resetTransform() painter.setPen(self.midPen) self.renderEdges(painter)
def copyOptions(self) : opt = QStyleOptionSlider() opt.initFrom(self._slider) opt.maximum = self._slider.maximum(); opt.minimum = self._slider.minimum(); opt.orientation = self._slider.orientation() opt.pageStep = self._slider.pageStep() opt.singleStep = self._slider.singleStep() return opt