void QDockWidgetTitleButton::paintEvent(QPaintEvent *) { QPainter p(this); QStyleOptionToolButton opt; opt.init(this); opt.state |= QStyle::State_AutoRaise; if (style()->styleHint(QStyle::SH_DockWidget_ButtonsHaveFrame, 0, this)) { if (isEnabled() && underMouse() && !isChecked() && !isDown()) opt.state |= QStyle::State_Raised; if (isChecked()) opt.state |= QStyle::State_On; if (isDown()) opt.state |= QStyle::State_Sunken; style()->drawPrimitive(QStyle::PE_PanelButtonTool, &opt, &p, this); } opt.icon = icon(); opt.subControls = 0; opt.activeSubControls = 0; opt.features = QStyleOptionToolButton::None; opt.arrowType = Qt::NoArrow; int size = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this); opt.iconSize = QSize(size, size); style()->drawComplexControl(QStyle::CC_ToolButton, &opt, &p, this); }
void ToolButton::paintEvent(QPaintEvent* e) { if (!m_usingMultiIcon) { QToolButton::paintEvent(e); return; } QPainter p(this); QStyleOptionToolButton opt; opt.init(this); if (!isEnabled()) { p.drawPixmap(0, 0, m_disabledIcon); return; } if (isDown()) { p.drawPixmap(0, 0, m_activeIcon); return; } if (opt.state & QStyle::State_MouseOver) { p.drawPixmap(0, 0, m_hoverIcon); return; } p.drawPixmap(0, 0, m_normalIcon); }
void KDatePicker::setFontSize(int s) { QWidget *buttons[]= { // yearBackward, // monthBackward, d->selectMonth, d->selectYear, // monthForward, // yearForward }; const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]); int count; QFont font; QRect r; // ----- d->fontsize=s; for(count=0; count<NoOfButtons; ++count) { font=buttons[count]->font(); font.setPointSize(s); buttons[count]->setFont(font); } QFontMetrics metrics(d->selectMonth->fontMetrics()); for (int i = 1; ; ++i) { QString str = KGlobal::locale()->calendar()->monthName(i, KGlobal::locale()->calendar()->year(d->table->date()), KCalendarSystem::ShortName); if (str.isNull()) break; r=metrics.boundingRect(str); d->maxMonthRect.setWidth(qMax(r.width(), d->maxMonthRect.width())); d->maxMonthRect.setHeight(qMax(r.height(), d->maxMonthRect.height())); } QStyleOptionToolButton opt; // stolen from KToolBarButton opt.init(this); opt.font = d->selectMonth->font(); opt.icon = d->selectMonth->icon(); opt.text = d->selectMonth->text(); opt.features = d->selectMonth->menu() ? QStyleOptionToolButton::Menu : QStyleOptionToolButton::None; //### FIXME: delay? opt.subControls = QStyle::SC_All; opt.activeSubControls = 0; //### FIXME: !! QSize metricBound = style()->sizeFromContents(QStyle::CT_ToolButton, &opt, d->maxMonthRect, d->selectMonth); d->selectMonth->setMinimumSize(metricBound); d->table->setFontSize(s); }
/*! \internal Returns the rectangle occupied by this button, depending on \a child. */ QRect QAccessibleToolButton::rect(int child) const { if (!toolButton()->isVisible()) return QRect(); if (!child) return QAccessibleButton::rect(child); QStyleOptionToolButton opt; opt.init(widget()); QRect subrect = widget()->style()->subControlRect(QStyle::CC_ToolButton, &opt, QStyle::SC_ToolButtonMenu, toolButton()); if (child == ButtonExecute) subrect = QRect(0, 0, subrect.x(), widget()->height()); QPoint ntl = widget()->mapToGlobal(subrect.topLeft()); subrect.moveTopLeft(ntl); return subrect; }