void QSegmentWidget::DrawCenterText(QPainter *painter) { painter->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); painter->setWindow( -(BM_OSIZE / 2), -(BM_OSIZE / 2), BM_OSIZE, BM_OSIZE); int fontHeight = 30; int shadowDepth = 3; int fontBorder = 1; QColor colorText = QColor(255,255,255); QColor colorBorder = QColor(200, 200, 200); QColor colorShadow = QColor(60,60,60); QFont fontText("Arial", fontHeight, 200); QString text = QString::number(m_textValue); QString symbol("%"); QPainterPath pathText, pathTextShadow, pathSymbol, pathSymbolShadow; QPen pen; painter->setFont(fontText); #if (QT_VERSION >= QT_VERSION_CHECK(5, 11 , 0)) int lenText = painter->fontMetrics().horizontalAdvance(text); int lenSymb = painter->fontMetrics().horizontalAdvance(symbol); #else int lenText = painter->fontMetrics().width(text); int lenSymb = painter->fontMetrics().width(symbol); #endif pen.setWidth(fontBorder); pen.setColor(colorBorder); painter->setPen(colorShadow.darker(200)); painter->setBrush(colorShadow); // shadow symbol painter->setTransform(QTransform(1.5, 0, 0, 1.5, 0, 0)); pathSymbolShadow.addText(((lenText)/2)-(lenSymb/2)+(fontBorder*2)+3+shadowDepth, (fontHeight+shadowDepth), fontText, symbol); painter->drawPath(pathSymbolShadow); // shadow text painter->setTransform(QTransform(2.0, 0, 0, 3, 0, 0)); pathTextShadow.addText(-((lenText+lenSymb)/2)+3+shadowDepth, (fontHeight/2)+shadowDepth, fontText, text); painter->drawPath(pathTextShadow); painter->setPen(pen); painter->setBrush(colorText); // symbol painter->setTransform(QTransform(1.5, 0, 0, 1.5, 0, 0)); pathSymbol.addText(((lenText)/2)-(lenSymb/2)+(fontBorder*2)+3, (fontHeight), fontText, symbol); painter->drawPath(pathSymbol); // text painter->setTransform(QTransform(2.0, 0, 0, 3, 0, 0)); pathText.addText(-((lenText+lenSymb)/2)+3, (fontHeight/2), fontText, text); painter->drawPath(pathText); }
void QSideBar::paintEvent(QPaintEvent *event) { QPainter p(this); QFont fontText(p.font()); fontText.setFamily("Comic Sans MS"); //Helvetica Neue p.setFont(fontText); QImage texture(":/GUI/SideBarTexture"); p.fillRect(event->rect(), QBrush(texture)); p.setPen(Qt::black); p.drawLine(event->rect().topRight(), event->rect().bottomRight()); int action_y = 0; int action_x = 0; switch (paintMode_) { case 0: action_y = 0; break; case 1: action_y = event->rect().height()/2-actions_.size()*actionHeight_/2; break; } foreach(QAction *action, actions_) { QRect actionRect; if (style_ == 0) { actionRect = QRect(action_x, action_y, event->rect().width(), actionHeight_); } else { actionRect = QRect(action_x, action_y, event->rect().height(), actionWidth_); } int curActionResize = 0; if (action == clickedAction_) { curActionResize = clickedActionSize_; } QRect actionIconRect(action_x+actionSpace_/2+curActionResize/2, action_y+actionSpace_/2+curActionResize/2, event->rect().width()-actionSpace_-curActionResize, actionHeight_-actionSpace_-curActionResize); QIcon actionIcon(action->icon()); actionIcon.paint(&p, actionIconRect); if((action == actionUnderMouse_) && (action != clickedAction_)) { p.setOpacity(0.3); p.fillRect(actionRect, *colorUnderMouseAction_); p.setPen(QColor(9, 9, 9)); p.drawLine(actionRect.topLeft(), actionRect.topRight()); p.setOpacity(1); QToolTip::showText(mapFrom(this, QCursor::pos()), action->toolTip()); } if (action == clickedAction_) { p.setOpacity(clickedActionSize_ / 10.0); p.fillRect(actionRect, *colorClickedAction_); p.setPen(QColor(9, 9, 9)); p.drawLine(actionRect.topLeft(), actionRect.topRight()); p.setOpacity(1); } if(action == actions_.last()) { p.setPen(QColor(15, 15, 15)); p.drawLine(QPoint(action_x, actionRect.bottomLeft().y()-1), QPoint(actionRect.width(), actionRect.bottomRight().y()-1)); p.setPen(QColor(55, 55, 55)); p.drawLine(actionRect.bottomLeft(), actionRect.bottomRight()); } p.setPen(QColor(15, 15, 15)); p.drawLine(actionRect.topLeft(), actionRect.topRight()); p.setPen(QColor(55, 55, 55)); p.drawLine(QPoint(action_x, actionRect.topLeft().y()+1), QPoint(actionRect.width(), actionRect.topRight().y()+1)); if (isDrawText_) { p.setPen(QColor(217, 217, 217)); if(action->isChecked()) p.setPen(QColor(255, 255, 255)); QRect actionTextRect(action_x, action_y+actionRect.height()-20, event->rect().width(), 15); p.drawText(actionTextRect, Qt::AlignCenter, action->text()); } if (style_ == 0) { action_y += actionRect.height(); } else { action_x += actionRect.width(); } }
void Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { ITEM_HEIGHT = index.model()->property("item_height").toInt(); ITEM_WIDTH = index.model()->property("item_width").toInt(); if(ITEM_HEIGHT == 0 || ITEM_WIDTH == 0){ ITEM_WIDTH = 200; ITEM_HEIGHT = 200; } if(!qVariantCanConvert<MoviePtr>(index.data())) return; MoviePtr movie = index.data().value<MoviePtr>(); if(!movie) return; QPixmap pixmap("/Users/Blecam/Developpement/Fourre-tout/Mooztik/ressources/nopreview/no-preview-movie.jpg"); /*QPixmap pixmap(movie->poster()->pathThumbnail()); if(!QPixmapCache::find(movie->poster()->pathThumbnail(), &pixmap)){ QPixmapCache::insert(movie->poster()->pathThumbnail(), pixmap); }*/ const bool isSelected = option.state & QStyle::State_Selected; const bool isHovered = option.state & QStyle::State_MouseOver; const bool playSelected = index.model()->property("play_clicked").toBool(); QRect rect(0, 10, ITEM_WIDTH, ITEM_HEIGHT); rect.setWidth(option.rect.width()-10); painter->setRenderHint(QPainter::Antialiasing); painter->save(); painter->translate(option.rect.topLeft()); QRect posterRect(10, 10, ITEM_WIDTH-20, ITEM_HEIGHT-70); painter->drawPixmap(posterRect, pixmap); QRectF selectionRect(9, 9, posterRect.width()+2, posterRect.height()+2); QPen penBorder; penBorder.setWidth(7); penBorder.setColor(Qt::white); painter->setPen(penBorder); painter->drawRoundedRect(selectionRect, 10, 10); if(isSelected) { penBorder.setWidth(4); penBorder.setColor(QColor(38, 161, 241)); painter->setPen(penBorder); painter->drawRoundedRect(posterRect, 10, 10); } painter->restore(); painter->save(); QFont fontText(painter->font()); fontText.setFamily("Helvetia"); fontText.setBold(true); painter->setFont(fontText); painter->translate(option.rect.topLeft()); QString movie_title = movie->title(); QFontMetrics fm(painter->font()); if(movie_title.size() > 28) { movie_title.truncate(25); movie_title += "..." ; } painter->setPen(Qt::black); QRect textRect(0, rect.height()-60, option.rect.width(), 30); painter->drawText(textRect, Qt::AlignCenter, movie_title); painter->restore(); painter->save(); painter->translate(option.rect.topLeft()); QRect ratingRect(0, rect.height()-35, option.rect.width(), 15); //painter->fillRect(ratingRect, QColor(0, 0, 0, 230)); if(movie->rating() > 0) { QIcon iconRating(":/icons/rating"+QString::number(movie->rating())); iconRating.paint(painter, ratingRect, Qt::AlignCenter); } painter->restore(); if(movie->isFavorite()) { painter->save(); painter->translate(option.rect.topLeft()); QRect rectFav; rectFav = QRect(pixmap.rect().topLeft().x()+5, pixmap.rect().topLeft().y()+5, 20, 20); QIcon iconFav(":/icons/favorite"); iconFav.paint(painter, rectFav, Qt::AlignCenter); painter->restore(); } if(isHovered) { if(playSelected) { } } }