本文整理汇总了C++中QStyle::subElementRect方法的典型用法代码示例。如果您正苦于以下问题:C++ QStyle::subElementRect方法的具体用法?C++ QStyle::subElementRect怎么用?C++ QStyle::subElementRect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QStyle
的用法示例。
在下文中一共展示了QStyle::subElementRect方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: paint
void UserDelegate::paint(QPainter * painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
const QAbstractItemModel *m = index.model();
const QModelIndex idxc1 = index.sibling(index.row(), 1);
QVariant data = m->data(idxc1);
QList<QVariant> ql = data.toList();
painter->save();
QStyleOptionViewItemV4 o = option;
initStyleOption(&o, index);
QStyle *style = o.widget->style();
QIcon::Mode iconMode = QIcon::Normal;
QPalette::ColorRole colorRole = ((o.state & QStyle::State_Selected) ? QPalette::HighlightedText : QPalette::Text);
#if defined(Q_OS_WIN)
// Qt's Vista Style has the wrong highlight color for treeview items
// We can't check for QStyleSheetStyle so we have to search the children list search for a QWindowsVistaStyle
QList<QObject *> hierarchy = style->findChildren<QObject *>();
hierarchy.insert(0, style);
foreach (QObject *obj, hierarchy) {
if (QString::fromUtf8(obj->metaObject()->className()) == QString::fromUtf8("QWindowsVistaStyle")) {
colorRole = QPalette::Text;
break;
}
}
#endif
// draw background
style->drawPrimitive(QStyle::PE_PanelItemViewItem, &o, painter, o.widget);
// resize rect to exclude the flag icons
o.rect = option.rect.adjusted(0, 0, -FLAG_DIMENSION * ql.count(), 0);
// draw icon
QRect decorationRect = style->subElementRect(QStyle::SE_ItemViewItemDecoration, &o, o.widget);
o.icon.paint(painter, decorationRect, o.decorationAlignment, iconMode, QIcon::On);
// draw text
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &o, o.widget);
QString itemText = o.fontMetrics.elidedText(o.text, o.textElideMode, textRect.width());
painter->setFont(o.font);
style->drawItemText(painter, textRect, o.displayAlignment, o.palette, true, itemText, colorRole);
// draw flag icons to original rect
QRect ps = QRect(option.rect.right() - (ql.size() * FLAG_DIMENSION),
option.rect.y(), ql.size() * FLAG_DIMENSION,
option.rect.height());
for (int i = 0; i < ql.size(); ++i) {
QRect r = ps;
r.setSize(QSize(FLAG_ICON_DIMENSION, FLAG_ICON_DIMENSION));
r.translate(i * FLAG_DIMENSION + FLAG_ICON_PADDING, FLAG_ICON_PADDING);
QRect p = QStyle::alignedRect(option.direction, option.decorationAlignment, r.size(), r);
qvariant_cast<QIcon>(ql[i]).paint(painter, p, option.decorationAlignment, iconMode, QIcon::On);
}
painter->restore();
}
示例2: paintWeekScaleHeader
/*! Paints the week scale header.
* \sa paintHeader()
*/
void DateTimeGrid::paintWeekScaleHeader( QPainter* painter, const QRectF& headerRect, const QRectF& exposedRect,
qreal offset, QWidget* widget )
{
QStyle* style = widget?widget->style():QApplication::style();
// Paint a section for each week
QDateTime sdt = d->chartXtoDateTime( offset+exposedRect.left() );
sdt.setTime( QTime( 0, 0, 0, 0 ) );
// Go backwards until start of week
while ( sdt.date().dayOfWeek() != d->weekStart ) sdt = sdt.addDays( -1 );
QDateTime dt = sdt;
for ( qreal x = d->dateTimeToChartX( dt ); x < exposedRect.right()+offset;
dt = dt.addDays( 7 ),x=d->dateTimeToChartX( dt ) ) {
QStyleOptionHeader opt;
opt.init( widget );
opt.rect = QRectF( x-offset, headerRect.top()+headerRect.height()/2., dayWidth()*7, headerRect.height()/2. ).toRect();
opt.text = QString::number( dt.date().weekNumber() );
opt.textAlignment = Qt::AlignCenter;
// NOTE:CE_Header does not honor clipRegion(), so we do the CE_Header logic here
style->drawControl( QStyle::CE_HeaderSection, &opt, painter, widget );
QStyleOptionHeader subopt = opt;
subopt.rect = style->subElementRect( QStyle::SE_HeaderLabel, &opt, widget );
if ( subopt.rect.isValid() ) {
style->drawControl( QStyle::CE_HeaderLabel, &subopt, painter, widget );
}
}
// Paint a section for each month
dt = sdt;
for ( qreal x2 = d->dateTimeToChartX( dt ); x2 < exposedRect.right()+offset; x2=d->dateTimeToChartX( dt ) ) {
//qDebug()<<"paintWeekScaleHeader()"<<dt;
QDate next = dt.date().addMonths( 1 );
next = next.addDays( 1 - next.day() );
QStyleOptionHeader opt;
opt.init( widget );
opt.rect = QRectF( x2-offset, headerRect.top(), dayWidth()*dt.date().daysTo( next ), headerRect.height()/2. ).toRect();
opt.text = QDate::longMonthName( dt.date().month() );
opt.textAlignment = Qt::AlignCenter;
// NOTE:CE_Header does not honor clipRegion(), so we do the CE_Header logic here
style->drawControl( QStyle::CE_HeaderSection, &opt, painter, widget );
QStyleOptionHeader subopt = opt;
subopt.rect = style->subElementRect( QStyle::SE_HeaderLabel, &opt, widget );
if ( subopt.rect.isValid() ) {
style->drawControl( QStyle::CE_HeaderLabel, &subopt, painter, widget );
}
dt.setDate( next );
}
}
示例3: paint
void HtmlDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem optionV4 = option;
initStyleOption(&optionV4, index);
QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
QTextDocument doc;
doc.setHtml(optionV4.text);
/// Painting item without text
optionV4.text = QString();
style->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter);
QAbstractTextDocumentLayout::PaintContext ctx;
// Highlighting text if item is selected
if (optionV4.state & QStyle::State_Selected)
ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText));
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4);
painter->save();
painter->translate(textRect.topLeft());
painter->setClipRect(textRect.translated(-textRect.topLeft()));
doc.documentLayout()->draw(painter, ctx);
painter->restore();
}
示例4: updateEditorGeometry
/*!
Updates the \a editor for the item specified by \a index
according to the style \a option given.
*/
void QStyledItemDelegate::updateEditorGeometry(QWidget *editor,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if (!editor)
return;
Q_ASSERT(index.isValid());
const QWidget *widget = QStyledItemDelegatePrivate::widget(option);
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
// let the editor take up all available space
//if the editor is not a QLineEdit
//or it is in a QTableView
#if QT_CONFIG(tableview) && QT_CONFIG(lineedit)
if (qobject_cast<QExpandingLineEdit*>(editor) && !qobject_cast<const QTableView*>(widget))
opt.showDecorationSelected = editor->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, editor);
else
#endif
opt.showDecorationSelected = true;
QStyle *style = widget ? widget->style() : QApplication::style();
QRect geom = style->subElementRect(QStyle::SE_ItemViewItemText, &opt, widget);
if ( editor->layoutDirection() == Qt::RightToLeft) {
const int delta = qSmartMinSize(editor).width() - geom.width();
if (delta > 0) {
//we need to widen the geometry
geom.adjust(-delta, 0, 0, 0);
}
}
editor->setGeometry(geom);
}
示例5: paint
void ChatDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyleOptionViewItemV4 optionV4(option);
this->initStyleOption(&optionV4, index);
optionV4.state = option.state & (~QStyle::State_HasFocus);
QStyle* style = optionV4.widget ? optionV4.widget->style() : QApplication::style();
this->textDocument.setHtml(optionV4.text);
this->textDocument.setTextWidth(optionV4.rect.width());
optionV4.text = QString();
style->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter, optionV4.widget);
QAbstractTextDocumentLayout::PaintContext ctx;
ctx.palette = optionV4.palette;
// Highlighting text if item is selected.
if (optionV4.state & QStyle::State_Selected && optionV4.state & QStyle::State_Active)
ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText));
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4);
painter->save();
painter->translate(textRect.topLeft());
painter->setClipRect(textRect.translated(-textRect.topLeft()));
this->textDocument.documentLayout()->draw(painter, ctx);
painter->restore();
}
示例6: initStyleOption
void
SqlSearchDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QStyleOptionViewItemV4 optionV4 = option;
initStyleOption(&optionV4, index);
QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
QTextDocument doc;
doc.setHtml(optionV4.text);
optionV4.text = QString();
style->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter);
QAbstractTextDocumentLayout::PaintContext ctx;
QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ?
(option.state & QStyle::State_Active) ? QPalette::Normal : QPalette::Inactive : QPalette::Disabled;
if (optionV4.state & QStyle::State_Selected)
ctx.palette.setColor(QPalette::Text, optionV4.palette.color(cg, QPalette::HighlightedText));
else
ctx.palette.setColor(QPalette::Text, optionV4.palette.color(cg, QPalette::WindowText));
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4);
painter->save();
painter->translate(textRect.topLeft());
painter->setClipRect(textRect.translated(-textRect.topLeft()));
doc.documentLayout()->draw(painter, ctx);
painter->restore();
}
示例7: paint
void MessageViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItemV4 optionV4 = option;
initStyleOption(&optionV4, index);
QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
QTextDocument doc;
QString align(index.data(MessageModel::TypeRole) == 1 ? "left" : "right");
QString html = "<p align=\"" + align + "\" style=\"color:black;\">" + index.data(MessageModel::HTMLRole).toString() + "</p>";
doc.setHtml(html);
/// Painting item without text
optionV4.text = QString();
style->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter);
QAbstractTextDocumentLayout::PaintContext ctx;
// Highlighting text if item is selected
if (optionV4.state & QStyle::State_Selected)
ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText));
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4);
doc.setTextWidth( textRect.width() );
painter->save();
painter->translate(textRect.topLeft());
painter->setClipRect(textRect.translated(-textRect.topLeft()));
doc.documentLayout()->draw(painter, ctx);
painter->restore();
}
示例8: paintDayScaleHeader
/*! Paints the day scale header.
* \sa paintHeader()
*/
void DateTimeGrid::paintDayScaleHeader( QPainter* painter, const QRectF& headerRect, const QRectF& exposedRect,
qreal offset, QWidget* widget )
{
// For starters, support only the regular tab-per-day look
QStyle* style = widget?widget->style():QApplication::style();
// Paint a section for each day
QDateTime dt = d->chartXtoDateTime( offset+exposedRect.left() );
dt.setTime( QTime( 0, 0, 0, 0 ) );
for ( qreal x = d->dateTimeToChartX( dt ); x < exposedRect.right()+offset;
dt = dt.addDays( 1 ),x=d->dateTimeToChartX( dt ) ) {
QStyleOptionHeader opt;
opt.init( widget );
opt.rect = QRectF( x-offset, headerRect.top()+headerRect.height()/2., dayWidth(), headerRect.height()/2. ).toRect();
opt.text = dt.toString( QString::fromAscii( "ddd" ) ).left( 1 );
opt.textAlignment = Qt::AlignCenter;
// NOTE:CE_Header does not honor clipRegion(), so we do the CE_Header logic here
style->drawControl( QStyle::CE_HeaderSection, &opt, painter, widget );
QStyleOptionHeader subopt = opt;
subopt.rect = style->subElementRect( QStyle::SE_HeaderLabel, &opt, widget );
if ( subopt.rect.isValid() ) {
style->drawControl( QStyle::CE_HeaderLabel, &subopt, painter, widget );
}
}
dt = d->chartXtoDateTime( offset+exposedRect.left() );
dt.setTime( QTime( 0, 0, 0, 0 ) );
// Go backwards until start of week
while ( dt.date().dayOfWeek() != d->weekStart ) dt = dt.addDays( -1 );
// Paint a section for each week
for ( qreal x2 = d->dateTimeToChartX( dt ); x2 < exposedRect.right()+offset;
dt = dt.addDays( 7 ),x2=d->dateTimeToChartX( dt ) ) {
QStyleOptionHeader opt;
opt.init( widget );
opt.rect = QRectF( x2-offset, headerRect.top(), dayWidth()*7., headerRect.height()/2. ).toRect();
opt.text = QString::number( dt.date().weekNumber() );
opt.textAlignment = Qt::AlignCenter;
// NOTE:CE_Header does not honor clipRegion(), so we do the CE_Header logic here
style->drawControl( QStyle::CE_HeaderSection, &opt, painter, widget );
QStyleOptionHeader subopt = opt;
subopt.rect = style->subElementRect( QStyle::SE_HeaderLabel, &opt, widget );
if ( subopt.rect.isValid() ) {
style->drawControl( QStyle::CE_HeaderLabel, &subopt, painter, widget );
}
}
}
示例9: paint
void KOTodoRichTextDelegate::paint( QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index ) const
{
if ( index.data( KOTodoModel::IsRichTextRole ).toBool() ) {
QStyleOptionViewItemV4 opt = option;
initStyleOption( &opt, index );
const QWidget *widget = opt.widget;
QStyle *style = widget ? widget->style() : QApplication::style();
QRect textRect = style->subElementRect( QStyle::SE_ItemViewItemText,
&opt, widget );
// draw the item without text
opt.text.clear();
style->drawControl( QStyle::CE_ItemViewItem, &opt, painter, widget );
// draw the text (rich text)
QPalette::ColorGroup cg = opt.state & QStyle::State_Enabled ?
QPalette::Normal : QPalette::Disabled;
if ( cg == QPalette::Normal && !( opt.state & QStyle::State_Active ) ) {
cg = QPalette::Inactive;
}
if ( opt.state & QStyle::State_Selected ) {
painter->setPen(
QPen( opt.palette.brush( cg, QPalette::HighlightedText ), 0 ) );
} else {
painter->setPen(
QPen( opt.palette.brush( cg, QPalette::Text ), 0 ) );
}
if ( opt.state & QStyle::State_Editing ) {
painter->setPen( QPen( opt.palette.brush( cg, QPalette::Text ), 0 ) );
painter->drawRect( textRect.adjusted( 0, 0, -1, -1 ) );
}
m_textDoc->setHtml( index.data().toString() );
painter->save();
painter->translate( textRect.topLeft() );
QRect tmpRect = textRect;
tmpRect.moveTo( 0, 0 );
m_textDoc->setTextWidth( tmpRect.width() );
m_textDoc->drawContents( painter, tmpRect );
painter->restore();
} else {
// align the text at top so that when it has more than two lines
// it will just cut the extra lines out instead of aligning centered vertically
QStyleOptionViewItem copy = option;
copy.displayAlignment = Qt::AlignLeft | Qt::AlignTop;
QStyledItemDelegate::paint( painter, copy, index );
}
}
示例10: paintHourScaleHeader
/*! Paints the hour scale header.
* \sa paintHeader()
*/
void DateTimeGrid::paintHourScaleHeader( QPainter* painter, const QRectF& headerRect, const QRectF& exposedRect,
qreal offset, QWidget* widget )
{
QStyle* style = widget?widget->style():QApplication::style();
// Paint a section for each hour
QDateTime dt = d->chartXtoDateTime( offset+exposedRect.left() );
dt.setTime( QTime( dt.time().hour(), 0, 0, 0 ) );
for ( qreal x = d->dateTimeToChartX( dt ); x < exposedRect.right()+offset;
dt = dt.addSecs( 60*60 /*1 hour*/ ),x=d->dateTimeToChartX( dt ) ) {
QStyleOptionHeader opt;
opt.init( widget );
opt.rect = QRectF( x-offset, headerRect.top()+headerRect.height()/2., dayWidth()/24., headerRect.height()/2. ).toRect();
opt.text = dt.time().toString( QString::fromAscii( "hh" ) );
opt.textAlignment = Qt::AlignCenter;
// NOTE:CE_Header does not honor clipRegion(), so we do the CE_Header logic here
style->drawControl( QStyle::CE_HeaderSection, &opt, painter, widget );
QStyleOptionHeader subopt = opt;
subopt.rect = style->subElementRect( QStyle::SE_HeaderLabel, &opt, widget );
if ( subopt.rect.isValid() ) {
style->drawControl( QStyle::CE_HeaderLabel, &subopt, painter, widget );
}
}
dt = d->chartXtoDateTime( offset+exposedRect.left() );
dt.setTime( QTime( 0, 0, 0, 0 ) );
// Paint a section for each day
for ( qreal x2 = d->dateTimeToChartX( dt ); x2 < exposedRect.right()+offset;
dt = dt.addDays( 1 ),x2=d->dateTimeToChartX( dt ) ) {
QStyleOptionHeader opt;
opt.init( widget );
opt.rect = QRectF( x2-offset, headerRect.top(), dayWidth(), headerRect.height()/2. ).toRect();
opt.text = QDate::longDayName( dt.date().dayOfWeek() );
opt.textAlignment = Qt::AlignCenter;
// NOTE:CE_Header does not honor clipRegion(), so we do the CE_Header logic here
style->drawControl( QStyle::CE_HeaderSection, &opt, painter, widget );
QStyleOptionHeader subopt = opt;
subopt.rect = style->subElementRect( QStyle::SE_HeaderLabel, &opt, widget );
if ( subopt.rect.isValid() ) {
style->drawControl( QStyle::CE_HeaderLabel, &subopt, painter, widget );
}
}
}
示例11: paint
void ProcessItemDelegate::paint(QPainter * painter,
const QStyleOptionViewItem &option, const QModelIndex & index) const
{
QStyleOptionViewItemV4 opt = option;
initStyleOption(&opt, index);
painter->save();
painter->setClipRect(opt.rect);
// Draw the background.
const QWidget * widget = opt.widget;
QStyle * style = widget ? widget->style() : QApplication::style();
style->proxy()->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, widget);
QRect iconRect = style->subElementRect(QStyle::SE_ItemViewItemDecoration, &opt,
widget);
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &opt, widget);
// Draw the icon.
QIcon::Mode mode = QIcon::Normal;
if (!(opt.state & QStyle::State_Enabled))
{
mode = QIcon::Disabled;
}
else if (opt.state & QStyle::State_Selected)
{
mode = QIcon::Selected;
}
QIcon::State state = opt.state & QStyle::State_Open ? QIcon::On : QIcon::Off;
opt.icon.paint(painter, iconRect, opt.decorationAlignment, mode, state);
// Draw the text.
QTextDocument doc;
doc.setHtml(opt.text);
doc.setDocumentMargin(2);
painter->translate(textRect.topLeft());
doc.drawContents(painter);
painter->restore();
}
示例12: editorEvent
/*!
\reimp
*/
bool QStyledItemDelegate::editorEvent(QEvent *event,
QAbstractItemModel *model,
const QStyleOptionViewItem &option,
const QModelIndex &index)
{
Q_ASSERT(event);
Q_ASSERT(model);
// make sure that the item is checkable
Qt::ItemFlags flags = model->flags(index);
if (!(flags & Qt::ItemIsUserCheckable) || !(option.state & QStyle::State_Enabled)
|| !(flags & Qt::ItemIsEnabled))
return false;
// make sure that we have a check state
QVariant value = index.data(Qt::CheckStateRole);
if (!value.isValid())
return false;
const QWidget *widget = QStyledItemDelegatePrivate::widget(option);
QStyle *style = widget ? widget->style() : QApplication::style();
// make sure that we have the right event type
if ((event->type() == QEvent::MouseButtonRelease)
|| (event->type() == QEvent::MouseButtonDblClick)
|| (event->type() == QEvent::MouseButtonPress)) {
QStyleOptionViewItem viewOpt(option);
initStyleOption(&viewOpt, index);
QRect checkRect = style->subElementRect(QStyle::SE_ItemViewItemCheckIndicator, &viewOpt, widget);
QMouseEvent *me = static_cast<QMouseEvent*>(event);
if (me->button() != Qt::LeftButton || !checkRect.contains(me->pos()))
return false;
if ((event->type() == QEvent::MouseButtonPress)
|| (event->type() == QEvent::MouseButtonDblClick))
return true;
} else if (event->type() == QEvent::KeyPress) {
if (static_cast<QKeyEvent*>(event)->key() != Qt::Key_Space
&& static_cast<QKeyEvent*>(event)->key() != Qt::Key_Select)
return false;
} else {
return false;
}
Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt());
if (flags & Qt::ItemIsUserTristate)
state = ((Qt::CheckState)((state + 1) % 3));
else
state = (state == Qt::Checked) ? Qt::Unchecked : Qt::Checked;
return model->setData(index, state, Qt::CheckStateRole);
}
示例13: paintEvent
void RazorPanelPluginPrivate::paintEvent(QPaintEvent* event)
{
Q_Q(RazorPanelPlugin);
if (mMovable)
{
QPainter p(q);
QStyle *style = q->style();
QStyleOptionToolBar opt;
initStyleOption(&opt);
opt.rect = style->subElementRect(QStyle::SE_ToolBarHandle, &opt, q);
if (opt.rect.isValid())
style->drawPrimitive(QStyle::PE_IndicatorToolBarHandle, &opt, &p, q);
}
}
示例14: paint
void BlinkingDecorationDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyledItemDelegate::paint(painter,option,index);
QVariant var = index.data(Qt::DecorationRole);
QColor color = var.value<QColor>();
if((color.red()==255)&&(!m_red))
{
QStyleOptionViewItemV4 opt = option;
QStyledItemDelegate::initStyleOption(&opt, index);
QStyle* style = opt.widget ? opt.widget->style() : QApplication::style();
QRect rect = style->subElementRect( QStyle::SE_ItemViewItemDecoration ,&opt);
painter->fillRect(rect,QColor(Qt::darkGreen));
}
}
示例15: paint
void ProgressBarDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index ) const
{
QStyle *style;
QStyleOptionViewItemV4 opt = option;
initStyleOption( &opt, index );
style = opt.widget ? opt.widget->style() : QApplication::style();
style->drawPrimitive( QStyle::PE_PanelItemViewItem, &opt, painter );
if ( !( opt.state & QStyle::State_Editing ) ) {
bool ok = false;
(void) index.data().toInt(&ok);
if ( ok ) {
QStyleOptionProgressBar pbOption;
pbOption.QStyleOption::operator=( option );
initStyleOptionProgressBar( &pbOption, index );
style->drawControl( QStyle::CE_ProgressBar, &pbOption, painter );
// Draw focus, copied from qt
if (opt.state & QStyle::State_HasFocus) {
painter->save();
QStyleOptionFocusRect o;
o.QStyleOption::operator=( opt );
o.rect = style->subElementRect( QStyle::SE_ItemViewItemFocusRect, &opt, opt.widget );
o.state |= QStyle::State_KeyboardFocusChange;
o.state |= QStyle::State_Item;
QPalette::ColorGroup cg = ( opt.state & QStyle::State_Enabled )
? QPalette::Normal : QPalette::Disabled;
o.backgroundColor = opt.palette.color( cg, ( opt.state & QStyle::State_Selected )
? QPalette::Highlight : QPalette::Window );
style->drawPrimitive( QStyle::PE_FrameFocusRect, &o, painter, opt.widget );
//kDebug(planDbg())<<"Focus"<<o.rect<<opt.rect<<pbOption.rect;
painter->restore();
}
} else {
EnumDelegate del;
del.paint( painter, option, index );
}
}
}