qt-material-widgets/components/avatar.cpp

79 lines
1.7 KiB
C++
Raw Normal View History

2016-04-14 14:21:28 +00:00
#include <QWidget>
#include <QPainter>
2016-06-17 13:09:19 +00:00
#include <QIcon>
2016-04-14 14:21:28 +00:00
#include "avatar.h"
2016-06-17 13:09:19 +00:00
#include "avatar_p.h"
2016-04-14 14:21:28 +00:00
2016-06-17 13:09:19 +00:00
AvatarPrivate::AvatarPrivate(Avatar *q)
: q_ptr(q),
size(40)
2016-04-14 14:21:28 +00:00
{
}
2016-06-17 13:09:19 +00:00
void AvatarPrivate::init()
2016-04-14 14:21:28 +00:00
{
2016-06-17 13:09:19 +00:00
Q_Q(Avatar);
QFont font(q->font());
font.setPointSizeF(16);
q->setFont(font);
2016-04-14 14:21:28 +00:00
}
2016-06-17 13:09:19 +00:00
Avatar::Avatar(QWidget *parent)
: QWidget(parent),
d_ptr(new AvatarPrivate(this))
2016-04-14 14:21:28 +00:00
{
2016-06-17 13:09:19 +00:00
d_func()->init();
2016-04-14 14:21:28 +00:00
}
2016-06-17 13:09:19 +00:00
Avatar::~Avatar()
2016-04-14 14:21:28 +00:00
{
}
void Avatar::paintEvent(QPaintEvent *event)
{
2016-06-17 13:09:19 +00:00
Q_UNUSED(event)
2016-04-14 14:21:28 +00:00
QPainter painter(this);
2016-04-14 14:31:09 +00:00
painter.drawRect(rect().adjusted(0, 0, -1, -1));
painter.setRenderHint(QPainter::Antialiasing);
QBrush brush;
brush.setStyle(Qt::SolidPattern);
painter.setPen(Qt::NoPen);
painter.setBrush(brush);
QRect r = rect();
2016-04-14 14:33:33 +00:00
painter.drawEllipse(r.center(), 20, 20);
2016-04-14 14:21:28 +00:00
2016-06-17 13:09:19 +00:00
//painter.setPen(textColor());
painter.setPen(Qt::white);
painter.setBrush(Qt::NoBrush);
painter.drawText(r.translated(0, -1), Qt::AlignCenter, "A");
return;//
QIcon icon("../qt-material-widgets/ic_message_white_24px.svg");
icon.paint(&painter,
QRect(width()/2-10, height()/2-10, 20, 20),
Qt::AlignCenter,
QIcon::Normal);
//
QImage img("../qt-material-widgets/uxceo-128.jpg");
QPixmap pm = QPixmap::fromImage(img.scaled(40,
40,
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation));
QPainterPath path;
path.addEllipse(width()/2-20, height()/2-20, 40, 40);
painter.setClipPath(path);
painter.drawPixmap(QRect(width()/2-20, height()/2-20, 40, 40), pm);
2016-04-14 14:21:28 +00:00
}