qml圆形头像(一)—— 使用蒙板
https://blog.csdn.net/hp_cpp/article/details/91379356
这篇用qml实现了圆形头像的效果,但是锯齿较为严重。
用C++类继承QQuickPaintedItem,然后重写void paint(QPainter *painter);
这样也可以实现圆形头像的效果,不需要用qml中的蒙板,而且抗锯齿效果更好。
circleHead.h
#ifndef CIRCLEHEAD_H
#define CIRCLEHEAD_H
#include <QtQuick/QQuickPaintedItem>
#include <QColor>
class CircleHead : public QQuickPaintedItem // 为了基于QPainter API实现自定义的绘制效果,我们需要继承这个类。如果不需要使用QPainter API,我们可以继承QQuickItem,甚至如果连可视化也不需要,QObject以及它的子类都可以作为我们继承的对象
{
Q_OBJECT // 因为需要使用到Qt的元对象系统
Q_PROPERTY(QString source READ source WRITE setSource NOTIFY sourceChanged)
public:
CircleHead(QQuickItem *parent = nullptr); // 作为可视化组件我们需要将其父对象设置为QQuickItem
QString source() const;
void setSource(const QString &source);
void paint(QPainter *painter); // 最后我们重载QQuickPaintedItem的paint函数,实现我们的自定义绘图
signals: