void KexiDBComboBox::createEditor() { KexiDBAutoField::createEditor(); if (subwidget()) { subwidget()->setGeometry(editorGeometry()); if (!d->isEditable) { QStyleOptionComboBox option; option.initFrom(subwidget()); const QRect comboRect = subwidget()->style()->subControlRect( QStyle::CC_ComboBox, &option, QStyle::SC_ComboBoxEditField, subwidget()); kDebug() << "comboRect:" << comboRect; subwidget()->setContentsMargins(comboRect.left(), comboRect.top(), width() - comboRect.right(), height() - comboRect.bottom()); int l, t, r, b; subwidget()->getContentsMargins(&l, &t, &r, &b); kDebug() << "altered margins:" << l << t << r << b; subwidget()->setFocusPolicy(Qt::NoFocus); subwidget()->setCursor(QCursor(Qt::ArrowCursor)); // widgets like listedit have IbeamCursor, we don't want that QPalette subwidgetPalette(subwidget()->palette()); subwidgetPalette.setColor(QColorGroup::Base, Qt::transparent); subwidget()->setPalette(subwidgetPalette); d->subWidgetsWithDisabledEvents.clear(); d->subWidgetsWithDisabledEvents << subwidget(); subwidget()->installEventFilter(this); QList<QWidget*> widgets(subwidget()->findChildren<QWidget*>()); foreach(QWidget *widget, widgets) { d->subWidgetsWithDisabledEvents << widget; widget->installEventFilter(this); } }
void StatusChangeButton::paintEvent(QPaintEvent *event) { QStylePainter painter(this); if(underMouse()) { QStyleOptionButton opt; opt.initFrom(this); if(isDown()) { opt.state |= QStyle::State_Sunken; } painter.drawControl(QStyle::CE_PushButton, opt); } painter.setPen(palette().color(QPalette::Text)); QRect textRect = rect(); textRect.moveLeft(iconSize().width() + 4); painter.drawText(textRect, Qt::AlignVCenter | Qt::TextSingleLine, text()); painter.drawPixmap(QPoint(2, (height() - iconSize().height()) / 2), icon().pixmap(iconSize())); QStyleOptionComboBox opt; opt.initFrom(this); opt.rect = QRect(width() - 15, height() / 2 - 6, 11, 13); painter.drawPrimitive(QStyle::PE_IndicatorArrowDown, opt); }
void KexiDBComboBox::paintEvent(QPaintEvent *) { QPainter p(this); p.setPen(palette().color(QPalette::Text)); // QColorGroup cg(palette().active()); // if ( hasFocus() ) // cg.setColor(QColorGroup::Base, cg.highlight()); // else QPalette pal(palette()); pal.setColor(QColorGroup::Base, paletteBackgroundColor()); //update base color using (reimplemented) bg color if (width() < 5 || height() < 5) { qDrawShadePanel(&p, rect(), pal, false /* !sunken */, 2 /*line width*/, &pal.brush(QPalette::Button)/*fill*/); return; } #ifdef __GNUC__ #warning TODO KexiDBComboBox::paintEvent() #else #pragma WARNING( TODO KexiDBComboBox::paintEvent() ) #endif QStyleOptionComboBox option; option.palette = pal; option.initFrom(d->paintedCombo); if (isEnabled()) option.state |= QStyle::State_Enabled; if (hasFocus()) option.state |= QStyle::State_HasFocus; if (d->mouseOver) option.state |= QStyle::State_MouseOver; style()->drawComplexControl(QStyle::CC_ComboBox, &option, &p, d->paintedCombo); #if 0 //TODO //! @todo support reverse layout //bool reverse = QApplication::reverseLayout(); style()->drawComplexControl(QStyle::CC_ComboBox, &option, &p, d->paintedCombo /*this*/ flags, (uint)QStyle::SC_All, (d->buttonPressed ? QStyle::SC_ComboBoxArrow : QStyle::SC_None) ); if (d->isEditable) { //if editable, editor paints itself, nothing to do } else { //not editable: we need to paint the current item QRect editorGeometry(this->editorGeometry()); if (hasFocus()) { if (0 == qstrcmp(style()->name(), "windows")) //a hack p.fillRect(editorGeometry, cg.brush(QColorGroup::Highlight)); QRect r(QStyle::visualRect(style()->subRect(QStyle::SR_ComboBoxFocusRect, d->paintedCombo), this)); r = QRect(r.left() - 1, r.top() - 1, r.width() + 2, r.height() + 2); //enlare by 1 pixel each side to avoid covering by the subwidget style()->drawPrimitive(QStyle::PE_FocusRect, &p, r, cg, flags | QStyle::Style_FocusAtBorder, QStyleOption(cg.highlight())); } //todo } #endif }
void KonqCombo::mousePressEvent( QMouseEvent *e ) { m_dragStart = QPoint(); // null QPoint if ( e->button() == Qt::LeftButton && !itemIcon( currentIndex()).isNull() ) { // check if the pixmap was clicked int x = e->pos().x(); QStyleOptionComboBox comboOpt; getStyleOption(&comboOpt); int x0 = QStyle::visualRect( layoutDirection(), rect(), style()->subControlRect( QStyle::CC_ComboBox, &comboOpt, QStyle::SC_ComboBoxEditField, this ) ).x(); if ( x > x0 + 2 && x < lineEdit()->x() ) { m_dragStart = e->pos(); return; // don't call KComboBox::mousePressEvent! } } QStyleOptionComboBox optCombo; optCombo.initFrom(this); if ( e->button() == Qt::LeftButton && m_pageSecurity != KonqMainWindow::NotCrypted && style()->subElementRect( QStyle::SE_ComboBoxFocusRect, &optCombo, this ).contains( e->pos() ) ) emit showPageSecurity(); KComboBox::mousePressEvent( e ); }
void QmitkComboBoxListView::paintEvent(QPaintEvent *event) { if (m_ComboBox != NULL) { QStyleOptionComboBox option; option.initFrom(m_ComboBox); option.editable = m_ComboBox->isEditable(); if (m_ComboBox->style()->styleHint(QStyle::SH_ComboBox_Popup, &option, m_ComboBox)) { QStyleOptionMenuItem menuOption; menuOption.initFrom(this); menuOption.palette = this->palette(); menuOption.state = QStyle::State_None; menuOption.checkType = QStyleOptionMenuItem::NotCheckable; menuOption.menuRect = event->rect(); menuOption.maxIconWidth = 0; menuOption.tabWidth = 0; QPainter painter(this->viewport()); m_ComboBox->style()->drawControl(QStyle::CE_MenuEmptyArea, &menuOption, &painter, this); } } QListView::paintEvent(event); }
void ActionComboBoxWidget::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); QStyleOptionComboBox comboBoxOption; comboBoxOption.initFrom(this); comboBoxOption.editable = false; style()->drawComplexControl(QStyle::CC_ComboBox, &comboBoxOption, &painter, this); QStyleOptionViewItem viewItemOption; viewItemOption.initFrom(this); viewItemOption.displayAlignment |= Qt::AlignVCenter; if (currentIndex() >= 0) { itemDelegate()->paint(&painter, viewItemOption, m_view->getModel()->index(currentIndex(), 0)); } else { const int textMargin = (style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, this) + 1); painter.setFont(viewItemOption.font); painter.drawText(viewItemOption.rect.adjusted(textMargin, 0, -textMargin, 0), Qt::AlignVCenter, tr("Select Action")); } }
void KoResourceSelector::mouseMoveEvent( QMouseEvent * event ) { QStyleOptionComboBox option; option.initFrom( this ); QRect r = style()->subControlRect( QStyle::CC_ComboBox, &option, QStyle::SC_ComboBoxEditField, this ); if (r.contains(event->pos())) setCursor(Qt::PointingHandCursor); else unsetCursor(); }
void QgsDateTimeEdit::mousePressEvent( QMouseEvent *event ) { // catch mouse press on the button (when the current value is null) // in non-calendar mode: modifiy the date so it leads to showing current date (don't bother about time) // in calendar mode: be sure NULL is displayed when needed and show page of current date in calendar widget bool updateCalendar = false; if ( mIsNull ) { QStyle::SubControl control; if ( calendarPopup() ) { QStyleOptionComboBox optCombo; optCombo.init( this ); optCombo.editable = true; optCombo.subControls = QStyle::SC_All; control = style()->hitTestComplexControl( QStyle::CC_ComboBox, &optCombo, event->pos(), this ); if ( control == QStyle::SC_ComboBoxArrow && calendarWidget() ) { mCurrentPressEvent = true; // ensure the line edit still displays NULL updateCalendar = true; displayNull( updateCalendar ); mCurrentPressEvent = false; } } else { QStyleOptionSpinBox opt; this->initStyleOption( &opt ); control = style()->hitTestComplexControl( QStyle::CC_SpinBox, &opt, event->pos(), this ); if ( control == QStyle::SC_SpinBoxDown || control == QStyle::SC_SpinBoxUp ) { mCurrentPressEvent = true; disconnect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed ); resetBeforeChange( control == QStyle::SC_SpinBoxDown ? -1 : 1 ); connect( this, &QDateTimeEdit::dateTimeChanged, this, &QgsDateTimeEdit::changed ); mCurrentPressEvent = false; } } } QDateTimeEdit::mousePressEvent( event ); if ( updateCalendar ) { // set calendar page to current date to avoid going to minimal date page when value is null calendarWidget()->setCurrentPage( QDate::currentDate().year(), QDate::currentDate().month() ); } }
void KoSliderComboContainer::mousePressEvent(QMouseEvent *e) { QStyleOptionComboBox opt; opt.init(m_parent); opt.subControls = QStyle::SC_All; opt.activeSubControls = QStyle::SC_ComboBoxArrow; QStyle::SubControl sc = style()->hitTestComplexControl(QStyle::CC_ComboBox, &opt, m_parent->mapFromGlobal(e->globalPos()), m_parent); if (sc == QStyle::SC_ComboBoxArrow) setAttribute(Qt::WA_NoMouseReplay); QMenu::mousePressEvent(e); }
void KoSliderCombo::paintEvent(QPaintEvent *) { QStylePainter gc(this); gc.setPen(palette().color(QPalette::Text)); QStyleOptionComboBox opt; opt.init(this); opt.subControls = QStyle::SC_All; opt.editable = true; gc.drawComplexControl(QStyle::CC_ComboBox, opt); gc.drawControl(QStyle::CE_ComboBoxLabel, opt); }
void KoLineStyleSelector::paintEvent( QPaintEvent *pe ) { QComboBox::paintEvent( pe ); QStyleOptionComboBox option; option.initFrom( this ); QRect r = style()->subControlRect( QStyle::CC_ComboBox, &option, QStyle::SC_ComboBoxEditField, this ); QPen pen = itemData( currentIndex(), Qt::DecorationRole ).value<QPen>(); QPainter painter( this ); painter.setPen( pen ); painter.drawLine( r.left(), r.center().y(), r.right(), r.center().y() ); }
FlagBox::FlagBox(QWidget *parent) : QComboBox(parent) { m_model = new FlagBoxModel(this); setModel(m_model); QStyleOptionComboBox opt; opt.initFrom(this); opt.editable = isEditable(); if (style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, this)) setItemDelegate(new QItemDelegate(this)); connect(this, SIGNAL(activated(int)), this, SLOT(slotActivated(int))); }
QSize SqueezedComboBox::sizeHint() const { ensurePolished(); QFontMetrics fm = fontMetrics(); int maxW = count() ? 18 : 7 * fm.width(QChar('x')) + 18; int maxH = qMax(fm.lineSpacing(), 14) + 2; QStyleOptionComboBox options; options.initFrom(this); return style()->sizeFromContents(QStyle::CT_ComboBox, &options, QSize(maxW, maxH), this).expandedTo(QApplication::globalStrut()); }
void KoResourceSelector::paintEvent( QPaintEvent *pe ) { QComboBox::paintEvent( pe ); QStyleOptionComboBox option; option.initFrom( this ); QRect r = style()->subControlRect( QStyle::CC_ComboBox, &option, QStyle::SC_ComboBoxEditField, this ); QStyleOptionViewItem viewOption; viewOption.initFrom( this ); viewOption.rect = r; QPainter painter( this ); itemDelegate()->paint( &painter, viewOption, view()->currentIndex() ); }
void KoSliderCombo::mousePressEvent(QMouseEvent *e) { QStyleOptionComboBox opt; opt.init(this); opt.subControls = QStyle::SC_All; opt.editable = true; QStyle::SubControl sc = style()->hitTestComplexControl(QStyle::CC_ComboBox, &opt, e->pos(), this); if (sc == QStyle::SC_ComboBoxArrow && !d->container->isVisible()) { d->showPopup(); } else QComboBox::mousePressEvent(e); }
void DebuggerMainWindow::registerPerspective(const QByteArray &perspectiveId, const Perspective &perspective) { m_perspectiveForPerspectiveId.insert(perspectiveId, perspective); m_perspectiveChooser->addItem(perspective.name(), perspectiveId); // adjust width if necessary const int oldWidth = m_perspectiveChooser->width(); const int contentWidth = m_perspectiveChooser->fontMetrics().width(perspective.name()); QStyleOptionComboBox option; option.initFrom(m_perspectiveChooser); const QSize sz(contentWidth, 1); const int width = m_perspectiveChooser->style()->sizeFromContents( QStyle::CT_ComboBox, &option, sz).width(); if (width > oldWidth) m_perspectiveChooser->setFixedWidth(width); }
QSize KoSliderCombo::minimumSizeHint() const { QSize sh; const QFontMetrics &fm = fontMetrics(); sh.setWidth(5 * fm.width(QLatin1Char('8'))); sh.setHeight(qMax(fm.lineSpacing(), 14) + 2); // add style and strut values QStyleOptionComboBox opt; opt.init(this); opt.subControls = QStyle::SC_All; opt.editable = true; sh = style()->sizeFromContents(QStyle::CT_ComboBox, &opt, sh, this); return sh.expandedTo(QApplication::globalStrut()); }
void StatusArrowButton::paintEvent(QPaintEvent *event) { QStylePainter painter(this); if(underMouse()) { QStyleOptionButton opt; opt.initFrom(this); if(isDown()) { opt.state |= QStyle::State_Sunken; } painter.drawControl(QStyle::CE_PushButton, opt); } QStyleOptionComboBox opt; opt.initFrom(this); opt.rect = QRect(width() - 15, height() / 2 - 6, 11, 13); painter.drawPrimitive(QStyle::PE_IndicatorArrowDown, opt); }
bool RenderThemeQt::paintMenuListButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r) { StylePainter p(i); if (!p.isValid()) return true; QStyleOptionComboBox option; if (p.widget) option.initFrom(p.widget); applyTheme(option, o); option.rect = r; // for drawing the combo box arrow, rely only on the fallback style p.style = fallbackStyle(); option.subControls = QStyle::SC_ComboBoxArrow; p.drawComplexControl(QStyle::CC_ComboBox, option); return false; }
bool RenderThemeQt::paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r) { StylePainter p(this, i); if (!p.isValid()) return true; QStyleOptionComboBox opt; if (p.widget) opt.initFrom(p.widget); applyTheme(opt, o); const QPoint topLeft = r.topLeft(); p.painter->translate(topLeft); opt.rect.moveTo(QPoint(0, 0)); opt.rect.setSize(r.size()); p.drawComplexControl(QStyle::CC_ComboBox, opt); p.painter->translate(-topLeft); return false; }
KoSliderCombo::KoSliderCombo(QWidget *parent) : QComboBox(parent) ,d(new KoSliderComboPrivate()) { d->thePublic = this; d->minimum = 0.0; d->maximum = 100.0; d->decimals = 2; d->container = new KoSliderComboContainer(this); d->container->setAttribute(Qt::WA_WindowPropagation); QStyleOptionComboBox opt; opt.init(this); // d->container->setFrameStyle(style()->styleHint(QStyle::SH_ComboBox_PopupFrameStyle, &opt, this)); d->slider = new QSlider(Qt::Horizontal); d->slider->setMinimum(0); d->slider->setMaximum(256); d->slider->setPageStep(10); d->slider->setValue(0); // When set to true, causes flicker on Qt 4.6. Any reason to keep it? d->firstShowOfSlider = false; //true; QHBoxLayout * l = new QHBoxLayout(); l->setMargin(2); l->setSpacing(2); l->addWidget(d->slider); d->container->setLayout(l); d->container->resize(200, 30); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); setEditable(true); //setEditText(KGlobal::locale()->formatNumber(0, d->decimals)); setEditText(QString::number(0.0f, 'f', d->decimals)); connect(d->slider, SIGNAL(valueChanged(int)), SLOT(sliderValueChanged(int))); connect(d->slider, SIGNAL(sliderReleased()), SLOT(sliderReleased())); connect(lineEdit(), SIGNAL(editingFinished()), SLOT(lineEditFinished())); }
bool RenderThemeQt::paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r) { QStyle* style = 0; QPainter* painter = 0; QWidget* widget = 0; if (!getStylePainterAndWidgetFromPaintInfo(i, style, painter, widget)) return true; QStyleOptionComboBox opt; opt.initFrom(widget); EAppearance appearance = applyTheme(opt, o); const QPoint topLeft = r.topLeft(); painter->translate(topLeft); opt.rect.moveTo(QPoint(0,0)); opt.rect.setSize(r.size()); opt.frame = false; style->drawComplexControl(QStyle::CC_ComboBox, &opt, painter, widget); painter->translate(-topLeft); return false; }
void KoResourceSelector::mousePressEvent( QMouseEvent * event ) { QStyleOptionComboBox opt; opt.init( this ); opt.subControls = QStyle::SC_All; opt.activeSubControls = QStyle::SC_ComboBoxArrow; QStyle::SubControl sc = style()->hitTestComplexControl(QStyle::CC_ComboBox, &opt, mapFromGlobal(event->globalPos()), this); // only clicking on combobox arrow shows popup, // otherwise the resourceApplied signal is send with the current resource if (sc == QStyle::SC_ComboBoxArrow) QComboBox::mousePressEvent( event ); else { QModelIndex index = view()->currentIndex(); if( ! index.isValid() ) return; KoResource * resource = static_cast<KoResource*>( index.internalPointer() ); if( resource ) emit resourceApplied( resource ); } }
void KoSliderCombo::KoSliderComboPrivate::showPopup() { if(firstShowOfSlider) { container->show(); //show container a bit early so the slider can be layout'ed firstShowOfSlider = false; } QStyleOptionSlider opt; opt.init(slider); opt.maximum=256; opt.sliderPosition = opt.sliderValue = slider->value(); int hdlPos = thePublic->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle).center().x(); QStyleOptionComboBox optThis; optThis.init(thePublic); optThis.subControls = QStyle::SC_All; optThis.editable = true; int arrowPos = thePublic->style()->subControlRect(QStyle::CC_ComboBox, &optThis, QStyle::SC_ComboBoxArrow).center().x(); QSize popSize = container->size(); QRect popupRect(thePublic->mapToGlobal(QPoint(arrowPos - hdlPos - slider->x(), thePublic->size().height())), popSize); // Make sure the popup is not drawn outside the screen area QRect screenRect = QApplication::desktop()->availableGeometry(thePublic); if (popupRect.right() > screenRect.right()) popupRect.translate(screenRect.right() - popupRect.right(), 0); if (popupRect.left() < screenRect.left()) popupRect.translate(screenRect.left() - popupRect.left(), 0); if (popupRect.bottom() > screenRect.bottom()) popupRect.translate(0, -(thePublic->height() + container->height())); container->setGeometry(popupRect); container->raise(); container->show(); slider->setFocus(); }
VBoxOSTypeSelectorWidget::VBoxOSTypeSelectorWidget (QWidget *aParent) : QIWithRetranslateUI <QWidget> (aParent) , mTxFamilyName (new QLabel (this)) , mTxTypeName (new QLabel (this)) , mPxTypeIcon (new QLabel (this)) , mCbFamily (new QComboBox (this)) , mCbType (new QComboBox (this)) , mLayoutPosition (-1) , mLayoutActivated (false) { /* Register CGuestOSType type */ qRegisterMetaType<CGuestOSType>(); /* Setup widgets */ mTxFamilyName->setAlignment (Qt::AlignRight); mTxTypeName->setAlignment (Qt::AlignRight); mTxFamilyName->setBuddy (mCbFamily); mTxTypeName->setBuddy (mCbType); mTxFamilyName->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Fixed); mTxTypeName->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Fixed); mCbFamily->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed); mCbType->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed); mPxTypeIcon->setFixedSize (32, 32); /* Check if host supports (AMD-V or VT-x) and long mode */ CHost host = vboxGlobal().host(); m_fSupportsHWVirtEx = host.GetProcessorFeature(KProcessorFeature_HWVirtEx); m_fSupportsLongMode = host.GetProcessorFeature(KProcessorFeature_LongMode); /* Fill OS family selector */ int maximumSize = 0; QFontMetrics fm (mCbFamily->font()); QList <CGuestOSType> families (vboxGlobal().vmGuestOSFamilyList()); for (int i = 0; i < families.size(); ++ i) { /* Search for maximum length among family names */ QString familyName (families [i].GetFamilyDescription()); maximumSize = maximumSize < fm.width (familyName) ? fm.width (familyName) : maximumSize; mCbFamily->insertItem (i, familyName); mCbFamily->setItemData (i, families [i].GetFamilyId(), RoleTypeID); /* Search for maximum length among type names */ QList <CGuestOSType> types (vboxGlobal().vmGuestOSTypeList (families [i].GetFamilyId())); for (int j = 0; j < types.size(); ++ j) { QString typeName (types [j].GetDescription()); maximumSize = maximumSize < fm.width (typeName) ? fm.width (typeName) : maximumSize; } } mCbFamily->setCurrentIndex (0); onFamilyChanged (mCbFamily->currentIndex()); /* Set the minimum size for OS Type & Family selectors. */ QStyleOptionComboBox options; options.initFrom (mCbFamily); QSize size (style()->sizeFromContents (QStyle::CT_ComboBox, &options, QSize (maximumSize, fm.height()), mCbFamily)); mCbFamily->setMinimumWidth (size.width()); mCbType->setMinimumWidth (size.width()); /* Slots connections */ connect (mCbFamily, SIGNAL (currentIndexChanged (int)), this, SLOT (onFamilyChanged (int))); connect (mCbType, SIGNAL (currentIndexChanged (int)), this, SLOT (onTypeChanged (int))); /* Retranslate */ retranslateUi(); }