QT c++ 样式 设置 标签(QLabel)的渐变色美化

发布于:2025-02-10 ⋅ 阅读:(168) ⋅ 点赞:(0)

上一篇文章中描述了按钮的纯色,本文描述标签的渐变色美化

1.头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
//#include "CustomButton.h"
#include <QVBoxLayout>
#include <QLinearGradient>
#include <QLabel>
#include <QTimer>

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void initUI();
private:
    Ui::Widget *ui;
   // CustomButton *button;
   // QPushButton *button2;
    QLabel *label;
    QTimer *timer;
    int counter=0;//计时器

};

2.cpp文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    initUI();
}

Widget::~Widget()
{
    delete ui;
}
void Widget::initUI()
{
    QVBoxLayout * mainlayout = new QVBoxLayout(this);//指定布局属于啥组件
        QLabel *label=new QLabel(this);
        timer=new QTimer(this);

        timer->start(1000);//定时1秒
       QObject::connect(timer, &QTimer::timeout,
                         [label,this]()//lambda函数
                         {  counter++;
                            if(1==counter%2)
                             //qDebug("pressed!");
                            {
                                label->setStyleSheet(" border-radius: 15px;"
                                    "border: 2px solid rgb(100, 120, 100); "
                                    "background-color: qlineargradient(x1: 0, y1: 0,"
                                                      "                x2: 1, y2: 1, "
                                    "stop: 0 #ffffff,"
                                    "stop: 0.3 #bbeebb,"
                                    "stop: 1 #4f4f4f);"
                                                    );//暗
                             }
                             else
                             {
                                label->setStyleSheet(" border-radius: 15px;"
                                  "border: 2px solid rgb(100, 120, 100); "
                                  "background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, "
                                  "stop: 0 #ffffff,"
                                  "stop: 0.3 #43ff43,"
                                  "stop: 1 #669066);"
                                );//亮绿色
                             }
                         });

        label->setFixedWidth(30);
        label->setFixedHeight(30);

        mainlayout->addWidget(label);//指定布局包含啥组件

   this->setLayout(mainlayout);
}
//效果:

            


网站公告

今日签到

点亮在社区的每一天
去签到