实现线性渐变的文字

//实现一个渐变的文字#include 
#include class GraduateText : public QWidget
{Q_OBJECT
public:explicit GraduateText(QWidget *parent = nullptr);//设置文字void setText(const QString &text);//设置文字大小void setTextSize(int size);//设置渐变颜色void setGraduateColor(QColor startColor, QColor endColor);protected:void paintEvent(QPaintEvent * event);private:QString m_strText;   //文字int m_iTextSize;     //文字大小QColor m_startColor;   //起始颜色QColor m_endColor;    //结束颜色
};
#include "GraduateText.h"
#include 
#include GraduateText::GraduateText(QWidget *parent) : QWidget(parent)
{}void GraduateText::setText(const QString &text)
{m_strText = text;update();
}void GraduateText::setTextSize(int size)
{m_iTextSize = size;update();
}void GraduateText::setGraduateColor(QColor startColor, QColor endColor)
{m_startColor = startColor;m_endColor = endColor;update();
}void GraduateText::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);   //防锯齿QPainterPath path;QFont font;font.setBold(true);   //加粗font.setPixelSize(m_iTextSize);  //字体大小painter.setFont(font);QFontMetrics fm(font);int textWidth = fm.width(m_strText);int textHeight = fm.height();//文字居中画,注释:文字是从左下角开始画path.addText(width() / 2 - textWidth / 2, height() / 2 + textHeight / 2, font, m_strText);QLinearGradient linearGridient(0,height() / 2 - textHeight / 2, 0, height() / 2 + textHeight / 2);linearGridient.setColorAt(0,m_startColor);linearGridient.setColorAt(1,m_endColor);painter.setBrush(linearGridient);painter.setBrush(linearGridient);painter.setPen(Qt::NoPen);painter.drawPath(path);
}
    GraduateText w;w.setText("中国加油!");w.setTextSize(30);w.setGraduateColor(Qt::yellow, Qt::red);w.show();

 

实现效果: 

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部