1 | // Copyright (C) 2016 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause |
3 | |
4 | #include <QtWidgets> |
5 | |
6 | #include "customstyle.h" |
7 | |
8 | CustomStyle::CustomStyle(const QWidget *widget) |
9 | { |
10 | //! [0] |
11 | const QSpinBox *spinBox = qobject_cast<const QSpinBox *>(object: widget); |
12 | if (spinBox) { |
13 | //! [0] //! [1] |
14 | } |
15 | //! [1] |
16 | } |
17 | |
18 | //! [2] |
19 | void CustomStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, |
20 | QPainter *painter, const QWidget *widget) const |
21 | { |
22 | if (element == PE_IndicatorSpinUp || element == PE_IndicatorSpinDown) { |
23 | QPolygon points(3); |
24 | int x = option->rect.x(); |
25 | int y = option->rect.y(); |
26 | int w = option->rect.width() / 2; |
27 | int h = option->rect.height() / 2; |
28 | x += (option->rect.width() - w) / 2; |
29 | y += (option->rect.height() - h) / 2; |
30 | |
31 | if (element == PE_IndicatorSpinUp) { |
32 | points[0] = QPoint(x, y + h); |
33 | points[1] = QPoint(x + w, y + h); |
34 | points[2] = QPoint(x + w / 2, y); |
35 | } else { // PE_SpinBoxDown |
36 | points[0] = QPoint(x, y); |
37 | points[1] = QPoint(x + w, y); |
38 | points[2] = QPoint(x + w / 2, y + h); |
39 | } |
40 | |
41 | if (option->state & State_Enabled) { |
42 | painter->setPen(option->palette.mid().color()); |
43 | painter->setBrush(option->palette.buttonText()); |
44 | } else { |
45 | painter->setPen(option->palette.buttonText().color()); |
46 | painter->setBrush(option->palette.mid()); |
47 | } |
48 | painter->drawPolygon(polygon: points); |
49 | } else { |
50 | QProxyStyle::drawPrimitive(element, option, painter, widget); |
51 | //! [2] //! [3] |
52 | } |
53 | //! [3] //! [4] |
54 | } |
55 | //! [4] |
56 | |