10StyleItemGeometry QQuickStyleItemScrollViewCorner::calculateGeometry()
12 QStyleOptionSlider styleOption;
13 initStyleOption(styleOption);
15 StyleItemGeometry geometry;
19 styleOption.orientation = Qt::Vertical;
20 const auto vScrollBarWidth = style()->sizeFromContents(QStyle::CT_ScrollBar, &styleOption, QSize(0, 0)).width();
21 styleOption.orientation = Qt::Horizontal;
22 const auto hScrollBarHeight = style()->sizeFromContents(QStyle::CT_ScrollBar, &styleOption, QSize(0, 0)).height();
24 geometry.minimumSize = QSize(vScrollBarWidth, hScrollBarHeight);
25 geometry.implicitSize = geometry.minimumSize;
32 QStyleOptionSlider styleOption;
33 initStyleOption(styleOption);
41 styleOption.orientation = Qt::Vertical;
43 const qreal scale = window()->effectiveDevicePixelRatio();
44 const int grooveWidth = minimumSize().width();
45 const int grooveHeight = minimumSize().height();
46 const QSize scrollBarMinSize = style()->sizeFromContents(QStyle::CT_ScrollBar, &styleOption, QSize(0, 0));
47 const QSize scrollBarSize = scrollBarMinSize + QSize(0, grooveHeight);
48 const int hStart = scrollBarMinSize.height() / 2;
49 const QRect targetImageRect(0, hStart * scale, grooveWidth * scale, grooveHeight * scale);
51 QImage scrollBarImage(scrollBarSize * scale, QImage::Format_ARGB32_Premultiplied);
52 scrollBarImage.setDevicePixelRatio(scale);
53 scrollBarImage.fill(Qt::transparent);
54 QPainter scrollBarPainter(&scrollBarImage);
55 styleOption.rect = QRect(QPoint(0, 0), scrollBarSize);
56 style()->drawComplexControl(QStyle::CC_ScrollBar, &styleOption, &scrollBarPainter);
59 painter->drawImage(QPoint(0, 0), scrollBarImage, targetImageRect);
63 path.lineTo(0, grooveHeight);
64 path.lineTo(grooveWidth, grooveHeight);
68 transform.translate(grooveWidth, 0);
72 painter->setCompositionMode(QPainter::CompositionMode_Source);
73 painter->setClipPath(path);
74 painter->setTransform(transform);
76 painter->drawImage(QPoint(0, 0), scrollBarImage, targetImageRect);