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); }
QStyleOptionMenuItem KxMenuItemWidget::getStyleOption() const { QWidget *q = parentWidget(); QMenu *menu = (QMenu *)q; KxMenuItem *action = fMenuItem; QStyleOptionMenuItem opt; opt.initFrom(this); opt.palette = q->palette(); opt.state = QStyle::State_None; if (q->window()->isActiveWindow()) opt.state |= QStyle::State_Active; if (q->isEnabled() && action->isEnabled() && (!action->menu() || action->menu()->isEnabled())) opt.state |= QStyle::State_Enabled; else opt.palette.setCurrentColorGroup(QPalette::Disabled); opt.font = action->font(); if (menu->activeAction() == action && !action->isSeparator()) { opt.state |= QStyle::State_Selected; // | (mouseDown ? QStyle::State_Sunken : QStyle::State_None); } if (!action->isCheckable()) { opt.checkType = QStyleOptionMenuItem::NotCheckable; } else { opt.checkType = (action->actionGroup() && action->actionGroup()->isExclusive()) ? QStyleOptionMenuItem::Exclusive : QStyleOptionMenuItem::NonExclusive; opt.checked = action->isChecked(); } if (action->menu()) opt.menuItemType = QStyleOptionMenuItem::SubMenu; else if (action->isSeparator()) opt.menuItemType = QStyleOptionMenuItem::Separator; else if (menu->defaultAction() == action) opt.menuItemType = QStyleOptionMenuItem::DefaultItem; else opt.menuItemType = QStyleOptionMenuItem::Normal; opt.icon = action->icon(); opt.text = action->text(); opt.menuRect = q->rect(); return opt; }
void TearOff::paintEvent(QPaintEvent * /*event*/) { QPainter p(this); const int fw = style()->pixelMetric(QStyle::PM_MenuPanelWidth, 0, this); QStyleOptionMenuItem menuOpt; menuOpt.initFrom(this); menuOpt.palette = palette(); menuOpt.state = QStyle::State_None; menuOpt.checkType = QStyleOptionMenuItem::NotCheckable; menuOpt.menuRect = rect(); menuOpt.maxIconWidth = 0; menuOpt.tabWidth = 0; menuOpt.menuItemType = QStyleOptionMenuItem::TearOff; menuOpt.rect.setRect(fw, fw, width() - (fw * 2), style()->pixelMetric(QStyle::PM_MenuTearoffHeight, 0, this)); p.setClipRect(menuOpt.rect); menuOpt.state = QStyle::State_None; if (highlighted_) menuOpt.state |= QStyle::State_Selected; style()->drawControl(QStyle::CE_MenuTearoff, &menuOpt, &p, this); }