荣耀手机开机界面时会出现HONOR字样,并且会有高光划过。
效果图1(默认效果):
效果图2(用户设置参数)
头文件
#ifndef QWHLABEL1_H
#define QWHLABEL1_H
#include <QLabel>
#include <QPaintEvent>
#include <QPainter>
#include <QPropertyAnimation>
class QWHLabel1 : public QLabel
{
Q_OBJECT
Q_ENUMS(State)
Q_PROPERTY(int m_lightPos READ getLightPos WRITE setLightPos)
public:
enum State
{
Stopped, //停止
Paused, //暂停
Running, //运行
};
explicit QWHLabel1(QWidget *parent = nullptr);
~QWHLabel1();
//设置文本大小
void setTextPixel(int textPixel);
//设置光线位置
void setLightPos(int lightPos);
//设置光线宽度
void setLightWidth(int lightWidth);
//设置背景颜色
void setBgBrush(const QBrush &brush);
//设置文本颜色
void setTextBrush(const QBrush &brush);
//设置光线颜色
void setLightBrush(const QBrush &brush);
//获取文本大小
int getTextPixel() const;
//获取光线位置
int getLightPos() const;
//获取光线宽度
int getLightWidth() const;
//获取背景颜色
QBrush getBgBrush() const;
//获取文本颜色
QBrush getTextBrush() const;
//获取光线颜色
QBrush getLightBrush() const;
//开始光线动画
void start();
//暂停光线动画
void pause();
//继续光线动画
void resume();
//停止光线动画
void stop();
protected:
void paintEvent(QPaintEvent *e);
signals:
//状态改变时发送信号
void stateChanged(State state);
public slots:
private:
int m_textPixel; //文本大小
int m_lightPos; //光线位置
int m_lightWidth; //光线宽度
QBrush m_bgBrush; //背景颜色
QBrush m_textBrush; //文本颜色
QBrush m_lightBrush; //光线颜色
QPropertyAnimation *m_animation; //动画
};
#endif // QWHLABEL1_H
测试代码
int width = ui->label->width();
int height = ui->label->height();
//设置背景颜色
QLinearGradient bgLGradient(QPointF(0, 0), QPointF(width, height));
bgLGradient.setColorAt(0, QColor(111, 13, 178, 150));
bgLGradient.setColorAt(1, QColor(10, 115, 183, 150));
ui->label->setBgBrush(bgLGradient);
//设置文本颜色
ui->label->setTextBrush(QColor(154, 159, 162));
//设置光线颜色
QLinearGradient lightLGradient(QPointF(0, 0), QPointF(width, height));
lightLGradient.setColorAt(0, QColor(10, 115, 183));
lightLGradient.setColorAt(0.5, Qt::white);
lightLGradient.setColorAt(1, QColor(111, 13, 178));
lightLGradient.setSpread(QGradient::ReflectSpread);
ui->label->setLightBrush(lightLGradient);
ui->label->start();