实现线性渐变的文字
//实现一个渐变的文字#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();
实现效果:

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