43{
44 const int borderWidth = 3;
45 const QPointF center = QRectF(
rect()).center();
46 const qreal radius = 0.5 * (center.x() + center.y()) - borderWidth;
47
48 const QPen fgPen(
palette().color(
m_d->isHighlighted ? QPalette::Highlight : QPalette::WindowText), borderWidth);
49 const QBrush bgBrush(
palette().brush(isDown() || (isCheckable() && isChecked()) ? QPalette::Mid : QPalette::
Window));
50
51 QPainter painter(this);
52 painter.setPen(fgPen);
53 painter.setBrush(bgBrush);
54 painter.setRenderHints(QPainter::Antialiasing);
55
56 painter.drawEllipse(center, radius, radius);
57
58 if (!icon().isNull()) {
59 const QIcon::Mode mode = isEnabled() ? QIcon::Normal : QIcon::Disabled;
60 const QIcon::State state = isCheckable() && isChecked() ? QIcon::On : QIcon::Off;
62
63 QPixmap
pixmap = icon().pixmap(size, mode, state);
64
65 QPointF iconOffset(0.5 * (width() -
size.width()),
66 0.5 * (height() -
size.height()));
67
68 painter.drawPixmap(iconOffset, pixmap);
69 }
70
71 if (!
m_d->onIcon.isNull()) {
72 const QIcon::Mode mode = isEnabled() ? QIcon::Normal : QIcon::Disabled;
73 const QIcon icon = isCheckable() && isChecked() ?
m_d->onIcon :
m_d->offIcon;
75
76 QPixmap
pixmap = icon.pixmap(size, mode);
77 QPointF iconOffset(0.5 * (width() -
size.width()),
78 0.5 * (height() -
size.height()));
79
80 painter.drawPixmap(iconOffset, pixmap);
81 }
82}
int iconSize(qreal width, qreal height)
int size(const Forest< T > &forest)
rgba palette[MAX_PALETTE]