继承QLabel类后重写parntEvent函数,提升为控件即可使用。
.h
#pragma once
#include <QLabel>
class FontQlabel : public QLabel
{
Q_OBJECT
public:
FontQlabel(QWidget *parent);
~FontQlabel();
protected:
void paintEvent(QPaintEvent *) override;
};
.cpp
#include "FontQlabel.h"
#include <QPainter>
FontQlabel::FontQlabel(QWidget *parent)
: QLabel(parent)
{
}
FontQlabel::~FontQlabel()
{
}
void FontQlabel::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing);
QFont font = painter.font();
//font.setPixelSize(160);
QFontMetrics fm(font);
QRect rect = fm.boundingRect(this->rect(), Qt::AlignCenter, this->text());
QPainterPath path;
path.addText(rect.x(), rect.y() + fm.ascent(), font, this->text());
//上层颜色
painter.setOpacity(0.5);
painter.fillPath(path, Qt::black);
//设置边
//painter.strokePath(path, QPen(Qt::black, 5));
//底层颜色
painter.save();
painter.setOpacity(1);
painter.translate(-4, -3);
painter.fillPath(path, Qt::white);
//设置边
//painter.strokePath(path, QPen(Qt::black, 4));
painter.restore();
}