上一篇文章中描述了按鈕的純色,本文描述標簽的漸變色美化。
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);
}
//效果:
? ? ? ? ? ??