コード例 #1
0
ファイル: qsegmentwidget.cpp プロジェクト: AdunanzA/Tsunami
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);

}
コード例 #2
0
ファイル: QSidebar.cpp プロジェクト: 4ynyky/CRM
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();
        }
    }
コード例 #3
0
ファイル: moviedelegate.cpp プロジェクト: feda12/Mooztik
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)
        {

        }
    }
}