自学内容网 自学内容网

QT c++ 样式 设置 按钮(QPushButton)的渐变色美化

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

1.头文件

#ifndef WIDGET_H
#define WIDGET_H

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

//#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();
    //void setButton(QPushButton * button,int color,int width,int height);
private:
    Ui::Widget *ui;
    //CustomButton *button;
    QPushButton *button2;
   // QLabel *label;
   // QTimer *timer;
    //int counter=0;
    bool flag_on=false;//on/off标志

};
#endif // WIDGET_H

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);//指定布局属于啥组件
    setStyleSheet("background-color:rgb(160,203,254);");

       QPushButton *button2=new QPushButton(this)  ;
        button2->setFixedWidth(65);
        button2->setFixedHeight(33);
        //button2->setStyleSheet("background-color:#dddddd");//初始背景颜色
        //setButton(button2,4,65,33);
        QObject::connect(button2, &QPushButton::pressed,
                [button2,this]()//lambda函数
                {
                    flag_on=!flag_on;//状态取反
                    //qDebug("pressed!");
                    if(flag_on)
                    {
                        QString color_on=
                            "border:1px solid gray;"
                            "background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, "
                            "stop: 0 #669066,"
                            "stop: 0.5 #43ff43,"
                            "stop: 1 #669066);";
                            //"background-color:#00ff73;";//上面几行是线性过渡色
                            button2->setStyleSheet(color_on);
                            //qDebug("On!");
                    }
                    else
                    {
                        QString color_off=
                            "border:1px solid gray;"
                             "background-color: qlineargradient(x1: 0, y1: 0, x2:0, y2: 1, "
                            "stop: 0.1 #aaaaaa,"
                            "stop: 0.5 #ffffff,"
                            "stop: 1 #cccccc);";
                            // "background-color:#f6f6f6;";//上面几行是线性过渡色
                            button2->setStyleSheet(color_off) ;
                            //qDebug("Off!");
                    }


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

   this->setLayout(mainlayout);
}

//效果,两种状态的渐变色效果如下

  

    off                    on


原文地址:https://blog.csdn.net/weixin_39926429/article/details/145070023

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!