44 const int borderWidth = 3;
45 const QPointF center = QRectF(
rect()).center();
46 const qreal radius = 0.5 * (center.x() + center.y()) - borderWidth;
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));
51 QPainter painter(
this);
52 painter.setPen(fgPen);
53 painter.setBrush(bgBrush);
54 painter.setRenderHints(QPainter::Antialiasing);
56 painter.drawEllipse(center, radius, radius);
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;
63 QPixmap pixmap = icon().pixmap(size, mode, state);
65 QPointF iconOffset(0.5 * (width() - size.width()),
66 0.5 * (height() - size.height()));
68 painter.drawPixmap(iconOffset, pixmap);
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;
76 QPixmap pixmap = icon.pixmap(size, mode);
77 QPointF iconOffset(0.5 * (width() - size.width()),
78 0.5 * (height() - size.height()));
80 painter.drawPixmap(iconOffset, pixmap);