本文整理汇总了C++中QStyle::drawComplexControl方法的典型用法代码示例。如果您正苦于以下问题:C++ QStyle::drawComplexControl方法的具体用法?C++ QStyle::drawComplexControl怎么用?C++ QStyle::drawComplexControl使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QStyle
的用法示例。
在下文中一共展示了QStyle::drawComplexControl方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: QIcon
void
ConfigDelegateBase::drawConfigWrench ( QPainter* painter, QStyleOptionViewItemV4& opt, QStyleOptionToolButton& topt ) const
{
const QWidget* w = opt.widget;
QStyle* style = w ? w->style() : QApplication::style();
// draw it the same size as the check belox
topt.font = opt.font;
topt.icon = QIcon( RESPATH "images/configure.png" );
topt.iconSize = QSize( 16, 16 );
topt.subControls = QStyle::SC_ToolButton;
topt.activeSubControls = QStyle::SC_None;
topt.features = QStyleOptionToolButton::None;
bool pressed = ( m_configPressed == opt.index );
topt.state = pressed ? QStyle::State_On : QStyle::State_Raised;
if( opt.state & QStyle::State_MouseOver || pressed )
topt.state |= QStyle::State_HasFocus;
style->drawComplexControl( QStyle::CC_ToolButton, &topt, painter, w );
}
示例2: paintMenuList
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;
}
示例3: paint
//.........这里部分代码省略.........
int borderWidth = style->pixelMetric(QStyle::PM_MDIFrameWidth, 0, 0);
int titleHeight = titleBarHeight(widget) + (noTitleBorder ? borderWidth : 0);
int titleExtra = noTitleBorder ? borderWidth : 0;
if ((paintAll || decorationRegion & Borders) && state == Normal && hasBorder) {
QRegion newClip = painter->clipRegion();
if (hasTitle) { // reduce flicker
QRect rect(widget->rect());
QRect r(rect.left() - titleExtra, rect.top() - titleHeight,
rect.width() + 2 * titleExtra, titleHeight);
newClip -= r;
}
if (!newClip.isEmpty()) {
QRect br = QDecoration::region(widget).boundingRect();
painter->save();
painter->setClipRegion(newClip);
QStyleOptionFrame opt;
opt.palette = pal;
opt.rect = br;
opt.lineWidth = borderWidth;
if (isActive)
opt.state |= QStyle::State_Active;
bool porterDuff = painter->paintEngine()->hasFeature(QPaintEngine::PorterDuff);
if (porterDuff)
painter->setCompositionMode(QPainter::CompositionMode_Source);
painter->fillRect(br, pal.window());
if (porterDuff)
painter->setCompositionMode(QPainter::CompositionMode_SourceOver);
style->drawPrimitive(QStyle::PE_FrameWindow, &opt, painter, 0);
painter->restore();
decorationRegion &= (~Borders);
handled |= true;
}
}
if (hasTitle) {
painter->save();
QStyleOptionTitleBar opt;
opt.subControls = (decorationRegion & Title
? QStyle::SC_TitleBarLabel : QStyle::SubControl(0))
| (decorationRegion & Menu
? QStyle::SC_TitleBarSysMenu : QStyle::SubControl(0))
| (decorationRegion & Help
? QStyle::SC_TitleBarContextHelpButton : QStyle::SubControl(0))
| (decorationRegion & Minimize
? QStyle::SC_TitleBarMinButton : QStyle::SubControl(0))
| (decorationRegion & Maximize
? QStyle::SC_TitleBarMaxButton : QStyle::SubControl(0))
| (decorationRegion & (Minimize | Maximize)
? QStyle::SC_TitleBarNormalButton : QStyle::SubControl(0))
| (decorationRegion & Close
? QStyle::SC_TitleBarCloseButton : QStyle::SubControl(0));
opt.titleBarFlags = widget->windowFlags();
opt.titleBarState = widget->windowState();
if (isActive)
opt.titleBarState |= QStyle::State_Active;
opt.text = windowTitleFor(widget);
opt.icon = widget->windowIcon();
opt.palette = pal;
opt.rect = QRect(widget->rect().x() - titleExtra, -titleHeight,
widget->rect().width() + 2 * titleExtra, titleHeight);
if (paintAll) {
painter->setClipRegion(opt.rect);
} else {
const QRect widgetRect = widget->rect();
QRegion newClip = opt.rect;
if (!(decorationRegion & Menu) && hasSysMenu)
newClip -= region(widget, widgetRect, Menu);
if (!(decorationRegion & Title) && hasTitle)
newClip -= region(widget, widgetRect, Title);
if (!(decorationRegion & Help) && hasContextHelp)
newClip -= region(widget, widgetRect, Help);
if (!(decorationRegion & Minimize) && hasMinimize)
newClip -= region(widget, widgetRect, Minimize);
if (!(decorationRegion & Maximize) && hasMaximize)
newClip -= region(widget, widgetRect, Maximize);
if (!(decorationRegion & (Minimize | Maximize)) && (hasMaximize | hasMinimize))
newClip -= region(widget, widgetRect, Normal);
if (!(decorationRegion & Close))
newClip -= region(widget, widgetRect, Close);
painter->setClipRegion(newClip);
}
if (state == Pressed)
opt.activeSubControls = opt.subControls;
style->drawComplexControl(QStyle::CC_TitleBar, &opt, painter, 0);
painter->restore();
decorationRegion &= ~(Title | Menu | Help | Normalize | Minimize | Maximize | Close);
handled |= true;
}
return handled;
}
示例4: qctm
//.........这里部分代码省略.........
qPainter->fillRect(r, qApp->palette().brush(QPalette::Active, QPalette::Window));
break;
}
case NS_THEME_SCROLLBAR_BUTTON_LEFT: {
QStyleOptionSlider opt;
InitPlainStyle(aWidgetType, aFrame, r, (QStyleOption&)opt, QStyle::State_Horizontal);
opt.orientation = Qt::Horizontal;
style->drawControl(QStyle::CE_ScrollBarSubLine, &opt, qPainter, NULL);
break;
}
case NS_THEME_SCROLLBAR_BUTTON_RIGHT: {
QStyleOptionSlider opt;
InitPlainStyle(aWidgetType, aFrame, r, (QStyleOption&)opt, QStyle::State_Horizontal);
opt.orientation = Qt::Horizontal;
style->drawControl(QStyle::CE_ScrollBarAddLine, &opt, qPainter, NULL);
break;
}
case NS_THEME_SCROLLBAR_BUTTON_UP: {
QStyleOptionSlider opt;
InitPlainStyle(aWidgetType, aFrame, r, (QStyleOption&)opt);
opt.orientation = Qt::Vertical;
style->drawControl(QStyle::CE_ScrollBarSubLine, &opt, qPainter, NULL);
break;
}
case NS_THEME_SCROLLBAR_BUTTON_DOWN: {
QStyleOptionSlider opt;
InitPlainStyle(aWidgetType, aFrame, r, (QStyleOption&)opt);
opt.orientation = Qt::Vertical;
style->drawControl(QStyle::CE_ScrollBarAddLine, &opt, qPainter, NULL);
break;
}
case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL: {
extraFlags |= QStyle::State_Horizontal;
QStyleOptionSlider option;
InitPlainStyle(aWidgetType, aFrame, r, (QStyleOption&)option, extraFlags);
option.orientation = Qt::Horizontal;
style->drawControl(QStyle::CE_ScrollBarSlider, &option, qPainter, NULL);
break;
}
case NS_THEME_SCROLLBAR_THUMB_VERTICAL: {
QStyleOptionSlider option;
InitPlainStyle(aWidgetType, aFrame, r, (QStyleOption&)option, extraFlags);
option.orientation = Qt::Vertical;
style->drawControl(QStyle::CE_ScrollBarSlider, &option, qPainter, NULL);
break;
}
case NS_THEME_DROPDOWN: {
QStyleOptionComboBox comboOpt;
InitComboStyle(aWidgetType, aFrame, r, comboOpt);
style->drawComplexControl(QStyle::CC_ComboBox, &comboOpt, qPainter);
break;
}
case NS_THEME_DROPDOWN_BUTTON: {
QStyleOptionComboBox option;
InitComboStyle(aWidgetType, aFrame, r, option);
style->drawPrimitive(QStyle::PE_FrameDefaultButton, &option, qPainter);
style->drawPrimitive(QStyle::PE_IndicatorSpinDown, &option, qPainter);
break;
}
case NS_THEME_DROPDOWN_TEXT:
case NS_THEME_DROPDOWN_TEXTFIELD:
case NS_THEME_TEXTFIELD:
case NS_THEME_TEXTFIELD_MULTILINE:
case NS_THEME_LISTBOX: {
QStyleOptionFrameV2 frameOpt;
nsEventStates eventState = GetContentState(aFrame, aWidgetType);
if (!IsDisabled(aFrame, eventState))
frameOpt.state |= QStyle::State_Enabled;
frameOpt.rect = r;
frameOpt.features = QStyleOptionFrameV2::Flat;
if (aWidgetType == NS_THEME_TEXTFIELD || aWidgetType == NS_THEME_TEXTFIELD_MULTILINE) {
QRect contentRect = style->subElementRect(QStyle::SE_LineEditContents, &frameOpt);
contentRect.adjust(mFrameWidth, mFrameWidth, -mFrameWidth, -mFrameWidth);
qPainter->fillRect(contentRect, QBrush(Qt::white));
}
frameOpt.palette = mNoBackgroundPalette;
style->drawPrimitive(QStyle::PE_FrameLineEdit, &frameOpt, qPainter, NULL);
break;
}
case NS_THEME_MENUPOPUP: {
QStyleOptionMenuItem option;
InitPlainStyle(aWidgetType, aFrame, r, (QStyleOption&)option, extraFlags);
style->drawPrimitive(QStyle::PE_FrameMenu, &option, qPainter, NULL);
break;
}
default:
break;
}
qPainter->restore();
return NS_OK;
}
示例5: checkRect
void
AccountFactoryWrapperDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyleOptionViewItemV4 opt = option;
initStyleOption( &opt, index );
const int center = opt.rect.height() / 2 + opt.rect.top();
const int topIcon = center - ICON_SIZE/2;
// draw the background
const QWidget* w = opt.widget;
QStyle* style = w ? w->style() : QApplication::style();
style->drawPrimitive( QStyle::PE_PanelItemViewItem, &opt, painter, w );
Account* acc = qobject_cast< Account* >( index.data( AccountFactoryWrapper::AccountRole ).value< QObject* >() );
Q_ASSERT( acc );
// Checkbox on left edge, then text
const QRect checkRect( PADDING/4, PADDING/4 + opt.rect.top(), opt.rect.height() - PADDING/4, opt.rect.height() - PADDING/4 );
m_cachedCheckRects[ index ] = checkRect;
QStyleOptionViewItemV4 opt2 = opt;
opt2.rect = checkRect;
opt.checkState == Qt::Checked ? opt2.state |= QStyle::State_On : opt2.state |= QStyle::State_Off;
style->drawPrimitive( QStyle::PE_IndicatorViewItemCheck, &opt2, painter, w );
// name on left
painter->drawText( opt.rect.adjusted( checkRect.right() + PADDING, PADDING, -PADDING, -PADDING ), Qt::AlignLeft | Qt::AlignVCenter, acc->accountFriendlyName() );
// remove, config, status on right
const QRect pmRect( opt.rect.right() - PADDING - ICON_SIZE, topIcon, ICON_SIZE, ICON_SIZE );
painter->drawPixmap( pmRect, TomahawkUtils::defaultPixmap( TomahawkUtils::ListRemove, TomahawkUtils::Original, pmRect.size() ) );
m_cachedButtonRects[ index ] = pmRect;
const QRect confRect( pmRect.left() - PADDING - CONFIG_WRENCH_SIZE, center - CONFIG_WRENCH_SIZE/2, CONFIG_WRENCH_SIZE, CONFIG_WRENCH_SIZE );
QStyleOptionToolButton topt;
topt.rect = confRect;
topt.pos = confRect.topLeft();
topt.font = opt.font;
topt.icon = ImageRegistry::instance()->pixmap( RESPATH "images/configure.svg", QSize( CONFIG_WRENCH_SIZE - 8, CONFIG_WRENCH_SIZE - 8 ) );
topt.iconSize = QSize( CONFIG_WRENCH_SIZE - 8, CONFIG_WRENCH_SIZE - 8 );
topt.subControls = QStyle::SC_ToolButton;
topt.activeSubControls = QStyle::SC_None;
topt.features = QStyleOptionToolButton::None;
bool pressed = ( m_configPressed == opt.index );
topt.state = pressed ? QStyle::State_On : QStyle::State_Raised;
if( opt.state & QStyle::State_MouseOver || pressed )
topt.state |= QStyle::State_HasFocus;
style->drawComplexControl( QStyle::CC_ToolButton, &topt, painter, w );
m_cachedConfigRects[ index ] = confRect;
QPixmap p;
QString statusText;
Account::ConnectionState state = acc->connectionState();
const QRect connectIconRect( confRect.left() - PADDING - ICON_SIZE, topIcon, ICON_SIZE, ICON_SIZE );
if ( state == Account::Connected )
{
p = TomahawkUtils::defaultPixmap( TomahawkUtils::SipPluginOnline, TomahawkUtils::Original, connectIconRect.size() );
statusText = tr( "Online" );
}
else if ( state == Account::Connecting )
{
p = TomahawkUtils::defaultPixmap( TomahawkUtils::SipPluginOffline, TomahawkUtils::Original, connectIconRect.size() );
statusText = tr( "Connecting..." );
}
else
{
p = TomahawkUtils::defaultPixmap( TomahawkUtils::SipPluginOffline, TomahawkUtils::Original, connectIconRect.size() );
statusText = tr( "Offline" );
}
painter->drawPixmap( connectIconRect, p );
int width = painter->fontMetrics().width( statusText );
painter->drawText( QRect( connectIconRect.left() - PADDING - width, center - painter->fontMetrics().height()/2, width, painter->fontMetrics().height() ), statusText );
}