void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget * = 0) const { if (element == QStyle::PE_PanelItemViewRow) { if (option->state & QStyle::State_Selected) drawSelectionBackground(painter, *option); } }
void NameItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (option.state & QStyle::State_Selected) drawSelectionBackground(painter, option); QString displayString; QPoint displayStringOffset; painter->save(); QFontMetrics fm(option.font); int width = 0; if (index.data(Qt::UserRole).isValid()) { int pixmapSide = 16; if (m_TreeModel->isNodeInvisible( index )) painter->setOpacity(0.5); ModelNode node = m_TreeModel->nodeForIndex(index); QIcon icon; if (node.isValid()) { // if node has no own icon, search for it in the itemlibrary const ItemLibraryInfo *libraryInfo = node.model()->metaInfo().itemLibraryInfo(); QList <ItemLibraryEntry> infoList = libraryInfo->entriesForType(node.type(), node.majorVersion(), node.minorVersion()); foreach (const ItemLibraryEntry &entry, infoList) { if (icon.isNull()) { icon = entry.icon(); break; } } } // if the library was also empty, use the default icon if (icon.isNull()) icon = QIcon(QLatin1String(":/ItemLibrary/images/item-default-icon.png")); if (!node.metaInfo().isValid()) icon = QIcon(QLatin1String(":/ItemLibrary/images/item-invalid-icon.png")); // If no icon is present, leave an empty space of 24 pixels anyway QPixmap pixmap = icon.pixmap(pixmapSide, pixmapSide); painter->drawPixmap(option.rect.x()+1,option.rect.y()+2,pixmap); displayString = node.id(); if (displayString.isEmpty()) displayString = node.simplifiedTypeName(); // Check text length does not exceed available space int extraSpace=12+pixmapSide; displayString = fm.elidedText(displayString,Qt::ElideMiddle,option.rect.width()-extraSpace); displayStringOffset = QPoint(5+pixmapSide,-5); width = fm.width(displayString); }
void ResourceItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (option.state & QStyle::State_Selected) drawSelectionBackground(painter, option); painter->save(); QIcon icon(m_model->fileIcon(index)); QPixmap pixmap(icon.pixmap(icon.availableSizes().front())); painter->drawPixmap(option.rect.x(),option.rect.y()+2,pixmap); QString myString(m_model->fileName(index)); // Check text length does not exceed available space int extraSpace=12+pixmap.width(); QFontMetrics fm(option.font); myString = fm.elidedText(myString,Qt::ElideMiddle,option.rect.width()-extraSpace); painter->drawText(option.rect.bottomLeft()+QPoint(3+pixmap.width(),-8),myString); painter->restore(); }
void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const { if (element == QStyle::PE_PanelItemViewRow) { if (option->state & QStyle::State_Selected) { drawSelectionBackground(painter, *option); } else { // // 3D shadows // painter->save(); // painter->setPen(QColor(255, 255, 255, 15)); // painter->drawLine(option->rect.topLeft(), option->rect.topRight()); // painter->setPen(QColor(0, 0, 0, 25)); // painter->drawLine(option->rect.bottomLeft(),option->rect.bottomRight()); // painter->restore(); } } else if (element == PE_IndicatorItemViewItemDrop) { painter->save(); QRect rect = option->rect; rect.setLeft(0); rect.setWidth(widget->rect().width()); QColor highlight = option->palette.text().color(); highlight.setAlphaF(0.7); painter->setPen(QPen(highlight.lighter(), 1)); if (option->rect.height() == 0) { if (option->rect.top()>0) painter->drawLine(rect.topLeft(), rect.topRight()); } else { highlight.setAlphaF(0.2); painter->setBrush(highlight); painter->drawRect(rect.adjusted(0, 0, -1, -1)); } painter->restore(); } else if (element == PE_FrameFocusRect) { // don't draw } else { QProxyStyle::drawPrimitive(element, option, painter, widget); } }
void IconCheckboxItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (!index.data(Qt::UserRole).isValid()) return; painter->save(); if (option.state & QStyle::State_Selected) drawSelectionBackground(painter, option); if (!m_TreeModel->nodeForIndex(index).isRootNode()) { bool isChecked= (m_TreeModel->itemFromIndex(index)->checkState() == Qt::Checked); if (m_TreeModel->isNodeInvisible( index )) painter->setOpacity(0.5); if (isChecked) painter->drawPixmap(option.rect.x()+2,option.rect.y()+2,onPix); else painter->drawPixmap(option.rect.x()+2,option.rect.y()+2,offPix); } painter->restore(); }