view ui/textoverlaybutton.cpp @ 929:613a0e24f316

(issue72) Added png icon for red circle.
author Emanuel Schuetze <emanuel@intevation.de>
date Fri, 22 Aug 2014 14:32:33 +0200
parents a467204a35f5
children 57371f2e8dae
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */

#include <QPaintEvent>
#include <QPainter>
#include <QFont>
#include <QApplication>

#include <QDebug>

#include "textoverlaybutton.h"

void TextOverlayButton::paintEvent(QPaintEvent *e)
{
    QToolButton::paintEvent(e);
    if (mOverlay == "0" || mOverlay.isEmpty()) {
        return;
    }
    QPainter painter(this);
    /* Only usable if opengl is used */
    painter.setRenderHint(QPainter::HighQualityAntialiasing, true);
    /* Else */
    painter.setRenderHint(QPainter::Antialiasing, true);

    QRect myRect = e->rect().translated(26, -29);

    // circle
    QLinearGradient gradient(myRect.topLeft(),
                             myRect.bottomRight());
    gradient.setColorAt(0, Qt::white);
    gradient.setColorAt(0.7, Qt::red);
    QBrush brush(gradient);
    painter.setBrush(brush);
    painter.setPen(Qt::white);
    painter.drawEllipse(75.5, 6, 20, 20);

    // font
    QFont font;
    font.setPixelSize(11);
    font.setWeight(QFont::Bold);
    painter.setFont(font);
    painter.drawText(myRect, Qt::AlignCenter | Qt::AlignVCenter, mOverlay);

    return;
}

http://wald.intevation.org/projects/trustbridge/