Qt修改QSS中的qlineargradient属性,实现颜色渐变
生活随笔
收集整理的這篇文章主要介紹了
Qt修改QSS中的qlineargradient属性,实现颜色渐变
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
程序如下:
運行截圖如下:
動態運行圖如下:
原理很簡單,修改QSS中的qlineargradient屬性即可:
源碼如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();protected slots:void startRSliderChanged(int value);void startGSliderChanged(int value);void startBSliderChanged(int value);void endRSliderChanged(int value);void endGSliderChanged(int value);void endBSliderChanged(int value);protected:void setWidgetStyle();void initWidget();private:Ui::Widget *ui;QString m_sheetStr;int m_startR;int m_startG;int m_startB;int m_endR;int m_endG;int m_endB; };#endif // WIDGET_Hmain.cpp
#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }widget.cpp
#include "widget.h" #include "ui_widget.h"#include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("CSDN IT1995");initWidget();m_sheetStr = "";connect(ui->startRHorizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(startRSliderChanged(int)));connect(ui->startGHorizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(startGSliderChanged(int)));connect(ui->startBHorizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(startBSliderChanged(int)));connect(ui->endRHorizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(endRSliderChanged(int)));connect(ui->endGHorizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(endGSliderChanged(int)));connect(ui->endBHorizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(endBSliderChanged(int))); }Widget::~Widget() {delete ui; }void Widget::startRSliderChanged(int value) {m_startR = value;setWidgetStyle(); }void Widget::startGSliderChanged(int value) {m_startG = value;setWidgetStyle(); }void Widget::startBSliderChanged(int value) {m_startB = value;setWidgetStyle(); }void Widget::endRSliderChanged(int value) {m_endR = value;setWidgetStyle(); }void Widget::endGSliderChanged(int value) {m_endG = value;setWidgetStyle(); }void Widget::endBSliderChanged(int value) {m_endB = value;setWidgetStyle(); }void Widget::setWidgetStyle() {QString str = QString("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(%1, %2, %3, 255), stop:1 rgba(%4, %5, %6, 255));").arg(m_startR).arg(m_startG).arg(m_startB).arg(m_endR).arg(m_endG).arg(m_endB);//qDebug() << str;ui->widget->setStyleSheet(str); }void Widget::initWidget() {QString widgetSheet1 = "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));";QString widgetSheet2 = "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));";QString widgetSheet3 = "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 255, 255, 255), stop:1 rgba(255, 255, 255, 255));";QString widgetSheet4 = "background-color: qlineargradient(spread:pad, x1:1, y1:1, x2:0, y2:1, stop:0 rgba(0, 0, 255, 255), stop:1 rgba(255, 255, 255, 255));";QString widgetSheet5 = "background-color: qlineargradient(spread:pad, x1:1, y1:1, x2:0, y2:1, stop:0 rgba(100, 255, 100, 255), stop:1 rgba(255, 255, 255, 255));";ui->widget_1->setStyleSheet(widgetSheet1);ui->widget_2->setStyleSheet(widgetSheet2);ui->widget_3->setStyleSheet(widgetSheet3);ui->widget_4->setStyleSheet(widgetSheet4);ui->widget_5->setStyleSheet(widgetSheet5);ui->startRHorizontalSlider->setMinimum(0);ui->startGHorizontalSlider->setMinimum(0);ui->startBHorizontalSlider->setMinimum(0);ui->startRHorizontalSlider->setMaximum(255);ui->startGHorizontalSlider->setMaximum(255);ui->startBHorizontalSlider->setMaximum(255);ui->endRHorizontalSlider->setMinimum(0);ui->endGHorizontalSlider->setMinimum(0);ui->endBHorizontalSlider->setMinimum(0);ui->endRHorizontalSlider->setMaximum(255);ui->endGHorizontalSlider->setMaximum(255);ui->endBHorizontalSlider->setMaximum(255);m_startR = 0;m_startG = 0;m_startB = 0;m_endR = 0;m_endG = 0;m_endB = 0; }?
總結
以上是生活随笔為你收集整理的Qt修改QSS中的qlineargradient属性,实现颜色渐变的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++,Qt,Python,Open
- 下一篇: C++工作笔记-模版类要注意的地方(对比