void ListItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QRect r = option.rect; //Color: #C4C4C4 QPen linePen(QColor::fromRgb(211,211,211), 1, Qt::SolidLine); //Color: #005A83 QPen lineMarkedPen(QColor::fromRgb(0,90,131), 1, Qt::SolidLine); //Color: #333 QPen fontPen(QColor::fromRgb(51,51,51), 1, Qt::SolidLine); //Color: #fff QPen fontMarkedPen(Qt::white, 1, Qt::SolidLine); if(option.state & QStyle::State_Selected) { QLinearGradient gradientSelected(r.left(),r.top(),r.left(),r.height()+r.top()); gradientSelected.setColorAt(0.0, QColor::fromRgb(119,213,247)); gradientSelected.setColorAt(0.9, QColor::fromRgb(27,134,183)); gradientSelected.setColorAt(1.0, QColor::fromRgb(0,120,174)); painter->setBrush(gradientSelected); painter->drawRect(r); //BORDER painter->setPen(lineMarkedPen); painter->drawLine(r.topLeft(),r.topRight()); painter->drawLine(r.topRight(),r.bottomRight()); painter->drawLine(r.bottomLeft(),r.bottomRight()); painter->drawLine(r.topLeft(),r.bottomLeft()); painter->setPen(fontMarkedPen); } else { //BACKGROUND //ALTERNATING COLORS painter->setBrush( (index.row() % 2) ? Qt::white : QColor(252,252,252) ); painter->drawRect(r); //BORDER painter->setPen(linePen); painter->drawLine(r.topLeft(),r.topRight()); painter->drawLine(r.topRight(),r.bottomRight()); painter->drawLine(r.bottomLeft(),r.bottomRight()); painter->drawLine(r.topLeft(),r.bottomLeft()); painter->setPen(fontPen); } //GET TITLE, DESCRIPTION AND ICON QIcon icon = QIcon(qvariant_cast<QPixmap>(index.data(Qt::DecorationRole))); QString title = index.data(Qt::DisplayRole).toString(); //QString description = index.data(Qt::UserRole + 1).toString(); int imageSpace = 10; if (!icon.isNull()) { //ICON QRect iconRect = option.rect.adjusted(4, 4, -4, -4); icon.paint(painter, iconRect, Qt::AlignVCenter|Qt::AlignCenter); imageSpace = 55; } //TITLE r = option.rect.adjusted(4, 0, 0, 0); painter->setFont( QFont( "Lucida Grande", 9, QFont::Normal ) ); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignBottom|Qt::AlignLeft, title, &r); /*QStyleOptionButton check_box_style_option; check_box_style_option.state |= QStyle::State_Enabled; check_box_style_option.rect = QRect(r.left(), r.top(), 32, 32); QApplication::style()->drawControl(QStyle::CE_PushButton, &check_box_style_option, painter);*/ /*//DESCRIPTION r = option.rect.adjusted(imageSpace, 30, -10, 0); painter->setFont( QFont( "Lucida Grande", 9, QFont::Normal ) ); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignLeft, description, &r);*/ }
void ListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QRect r = option.rect; //Color: #C4C4C4 QPen linePen(QColor::fromRgb(211, 211, 211), 2, Qt::SolidLine); //Color: #005A83 QPen lineMarkedPen(QColor::fromRgb(0, 90, 131), 1, Qt::SolidLine); //Color: #333 QPen fontPen(QColor::fromRgb(51, 51, 51), 1, Qt::SolidLine); //Color: #fff QPen fontMarkedPen(Qt::white, 1, Qt::SolidLine); //BORDER painter->setPen(linePen); painter->drawLine(r.topLeft(), r.topRight()); painter->drawLine(r.topRight(), r.bottomRight()); painter->drawLine(r.bottomLeft(), r.bottomRight()); painter->drawLine(r.topLeft(), r.bottomLeft()); if(option.state & QStyle::State_Selected) { QLinearGradient gradientSelected(r.left(), r.top(), r.left(), r.height() + r.top()); gradientSelected.setColorAt(0.0, QColor::fromRgb(119, 213, 247)); gradientSelected.setColorAt(0.9, QColor::fromRgb(27, 134, 183)); gradientSelected.setColorAt(1.0, QColor::fromRgb(0, 120, 174)); painter->setBrush(gradientSelected); painter->drawRect(r); //BORDER painter->setPen(lineMarkedPen); painter->drawLine(r.topLeft(), r.topRight()); painter->drawLine(r.topRight(), r.bottomRight()); painter->drawLine(r.bottomLeft(), r.bottomRight()); painter->drawLine(r.topLeft(), r.bottomLeft()); painter->setPen(fontMarkedPen); } else { //BACKGROUND //ALTERNATING COLORS painter->setBrush((index.row() % 2) ? Qt::white : QColor(252, 252, 252)); painter->drawRect(r); //BORDER painter->setPen(linePen); painter->drawLine(r.topLeft(), r.topRight()); painter->drawLine(r.topRight(), r.bottomRight()); painter->drawLine(r.bottomLeft(), r.bottomRight()); painter->drawLine(r.topLeft(), r.bottomLeft()); painter->setPen(fontPen); } //GET TITLE, DESCRIPTION AND ICON QIcon ic = QIcon(qvariant_cast<QPixmap>(index.data(Qt::DecorationRole))); QString title = index.data(Qt::DisplayRole).toString(); QString description = index.data(CP_DESC_ROLE).toString(); int imageSpace = 10; if(!ic.isNull()) { //ICON r = option.rect.adjusted(5, 10, -10, -10); ic.paint(painter, r, Qt::AlignVCenter | Qt::AlignLeft); imageSpace = 80; } //TITLE r = option.rect.adjusted(imageSpace, 0, -10, -30); painter->setFont(QFont("Lucida Grande", PGEDefaultFontSize + 2, QFont::Bold)); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignBottom | Qt::AlignLeft, title, &r); //DESCRIPTION r = option.rect.adjusted(imageSpace, 30, -10, 30); painter->setFont(QFont("Lucida Grande", PGEDefaultFontSize, QFont::Normal)); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignLeft, description, &r); }
void ListDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const{ QRect oR = option.rect; //oR.setHeight(option.rect.height() + 15); QRect r = oR; //Color: #C4C4C4 QPen linePen(QColor::fromRgb(211,211,211), 0, Qt::SolidLine); //Color: #005A83 QPen lineMarkedPen(QColor::fromRgb(0,90,131), 0, Qt::SolidLine); //Color: #333 QPen fontPen(QColor::fromRgb(51,51,51), 1, Qt::SolidLine); //Color: #fff QPen fontMarkedPen(Qt::white, 1, Qt::SolidLine); if(option.state & QStyle::State_Selected){ QLinearGradient gradientSelected(r.left(),r.top(),r.left(),r.height()+r.top()); //gradientSelected.setColorAt(0.0, QColor::fromRgb(119,213,247)); //gradientSelected.setColorAt(0.9, QColor::fromRgb(27,134,183)); //gradientSelected.setColorAt(1.0, QColor::fromRgb(0,120,174)); //painter->setBrush(QPalette::Highlight); //painter->drawRect(r); painter->fillRect(oR, option.palette.color(QPalette::Highlight)); //BORDER painter->setPen(lineMarkedPen); painter->drawLine(r.topLeft(),r.topRight()); painter->drawLine(r.topRight(),r.bottomRight()); painter->drawLine(r.bottomLeft(),r.bottomRight()); painter->drawLine(r.topLeft(),r.bottomLeft()); painter->setPen(fontMarkedPen); } else { //BACKGROUND //ALTERNATING COLORS painter->setBrush( (index.row() % 2) ? Qt::white : QColor(252,252,252) ); painter->drawRect(r); //BORDER painter->setPen(linePen); painter->drawLine(r.topLeft(),r.topRight()); painter->drawLine(r.topRight(),r.bottomRight()); painter->drawLine(r.bottomLeft(),r.bottomRight()); painter->drawLine(r.topLeft(),r.bottomLeft()); painter->setPen(fontPen); } //GET TITLE, DESCRIPTION AND ICON //QIcon ic = QIcon(qvariant_cast<QPixmap>(index.data(Qt::DecorationRole))); QString title = index.data(Qt::DisplayRole).toString(); QString description = index.data(Qt::DisplayRole + 1).toString(); int imageSpace = 20; // if (!ic.isNull()) { //ICON // r = option.rect.adjusted(5, 10, -10, -10); //ic.paint(painter, r, Qt::AlignVCenter|Qt::AlignLeft); //imageSpace = 55; //} QString family = QApplication::font().family(); QFont tite(family, 16, QFont::Bold); QFont desc(family, 15, QFont::Normal); //TITLE r = oR.adjusted(imageSpace, 6, 0, 0); painter->setFont( tite ); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignLeft, title, &r); //DESCRIPTION r = oR.adjusted(imageSpace, 30, 0, 0); painter->setFont( desc ); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignLeft, description, &r); }
void UserListDelegate::paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const { // Get title, description and icon QIcon mediaIcon = QIcon(qvariant_cast<QIcon>(index.data(Qt::DecorationRole))); QString title = index.data(Qt::DisplayRole).toString(); QString description = index.data(Qt::UserRole + 1).toString(); QString time = index.data(Qt::ToolTipRole).toString(); QRect r = option.rect; QPen linePen(QColor::fromRgb(211,211,211), 1, Qt::SolidLine); QPen lineMarkedPen(QColor::fromRgb(0,90,131), 1, Qt::SolidLine); QPen fontPen(QColor::fromRgb(51,51,51), 1, Qt::SolidLine); QPen fontMarkedPen(Qt::white, 1, Qt::SolidLine); // If a user is selected (pressed), changing the color(background) and size of the border area if (option.state & QStyle::State_Selected) { QLinearGradient gradientSelected(r.left(),r.top(),r.left(),r.height()+r.top()); gradientSelected.setColorAt(0.0, QColor::fromRgb(195,213,255)); gradientSelected.setColorAt(1.0, QColor::fromRgb(177,215,246)); painter->setBrush(gradientSelected); painter->drawRect(r); //BORDER painter->setPen(lineMarkedPen); painter->drawLine(r.topLeft(),r.topRight()); painter->drawLine(r.topRight(),r.bottomRight()); painter->drawLine(r.bottomLeft(),r.bottomRight()); painter->drawLine(r.topLeft(),r.bottomLeft()); painter->setPen(fontMarkedPen); } else { //BACKGROUND //ALTERNATING COLORS painter->setBrush( (index.row() % 2) ? Qt::white : QColor(252,252,252) ); painter->drawRect(r); //BORDER painter->setPen(linePen); painter->drawLine(r.topLeft(),r.topRight()); painter->drawLine(r.topRight(),r.bottomRight()); painter->drawLine(r.bottomLeft(),r.bottomRight()); painter->drawLine(r.topLeft(),r.bottomLeft()); painter->setPen(fontPen); } // The offset for the installation image int imageSpace = 10; if (!mediaIcon.isNull()) { r = option.rect.adjusted(2, 2, -1, -1); mediaIcon.paint(painter, r, Qt::AlignVCenter|Qt::AlignLeft); imageSpace = 85; } //TITLE r = option.rect.adjusted(imageSpace, 10, -10, -27); painter->setFont( QFont( "Lucida Grande", 12, QFont::Normal ) ); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignTop|Qt::AlignLeft, title, &r); // TIME r = option.rect.adjusted(60, 10, -10, -27); painter->setFont( QFont( "Lucida Grande", 8, QFont::Normal ) ); painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignTop|Qt::AlignRight, time , &r); //DESCRIPTION r = option.rect.adjusted(imageSpace, 35, -10, 10); painter->setFont( QFont( "Lucida Grande", 8, QFont::Normal ) ); //If the last message is long, it is cut, for convenient display if (description.size() > 30) { description.remove(30, description.size()); description.append("..."); } painter->drawText(r.left(), r.top(), r.width(), r.height(), Qt::AlignLeft, description, &r); }