当前位置: 首页 > article >正文

qt QLinearGradient详解

1、概述

QLinearGradient是Qt框架中QGradient的一个子类,用于创建线性渐变效果。线性渐变是一种颜色沿着一条直线平滑过渡到另一种颜色的效果。QLinearGradient允许你定义渐变的起点和终点,以及在这些点之间的颜色变化。你可以使用它来为图形、背景、边框等添加丰富的视觉效果。

2、重要方法

QLinearGradient提供了一系列方法来设置和控制线性渐变的效果。以下是一些重要的方法:

  • QLinearGradient(const QPointF &start, const QPointF &finalStop):构造函数,用于创建一个从start点到finalStop点的线性渐变。
  • void setStart(const QPointF &start):设置渐变的起点。
  • void setFinalStop(const QPointF &finalStop):设置渐变的终点。
  • QPointF start():返回渐变的起点。
  • QPointF finalStop():返回渐变的终点。
  • void setColorAt(qreal position, const QColor &color):在渐变中设置一个颜色停靠点。position是一个0到1之间的浮点数,表示颜色在渐变中的位置(0表示开始,1表示结束)。color是该位置的颜色。
  • QList<QGradientStop> stops():返回渐变中所有颜色停靠点的列表。
3、重要信号

与QGradient一样,QLinearGradient本身并不直接发出信号。它是用于描述渐变效果的类,而不是一个交互式控件。然而,当使用QLinearGradient与绘图相关的类(如QPainter)一起时,可以通过监听绘图相关的事件或信号来间接地了解渐变的使用情况。

4、常用枚举类型

QLinearGradient并没有定义自己的枚举类型。它继承了QGradient的枚举类型,如QGradient::Type(用于标识渐变的类型,对于QLinearGradient来说,这个值总是QGradient::LinearGradient)、QGradient::CoordinateMode(用于设置渐变的坐标模式)等。


#include <QApplication>
#include <QWidget>
#include <QPainter>

class GradientDemo : public QWidget {
public:
    GradientDemo(QWidget *parent = nullptr) : QWidget(parent) {
        resize(400, 300);
    }

protected:
    void paintEvent(QPaintEvent *event) override {
        QPainter painter(this);
        
        // Create a linear gradient from top-left to bottom-right
        QLinearGradient gradient(0, 0, width(), height());
        
        // Add color stops
        gradient.setColorAt(0.0, Qt::red);
        gradient.setColorAt(0.5, Qt::yellow);
        gradient.setColorAt(1.0, Qt::blue);
        
        // Fill the entire widget with the gradient
        painter.fillRect(rect(), gradient);
        
        // Create another gradient for demonstration
        QLinearGradient horizontalGradient(0, height()/2, width(), height()/2);
        horizontalGradient.setColorAt(0.0, QColor(0, 255, 0, 127));
        horizontalGradient.setColorAt(1.0, QColor(0, 0, 255, 127));
        
        // Draw a rectangle with the second gradient
        painter.fillRect(50, 50, width()-100, height()-100, horizontalGradient);
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    
    GradientDemo window;
    window.setWindowTitle("QLinearGradient Demo");
    window.show();
    
    return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 


http://www.kler.cn/a/418137.html

相关文章:

  • 深度学习中的生成对抗网络(GAN)原理与应用
  • CentOS使用chrony服务进行时间同步源设置脚本
  • Unity3D模型场景等测量长度和角度功能demo开发
  • 基于Matlab实现三维点坐标生成点云(源码+数据)
  • 把当下的快乐和长远的目标连接在一起。
  • Scala中字符串
  • 【C++二分查找 前缀和】2333. 最小差值平方和|2011
  • Kubernetes集群操作
  • C++编程:模拟实现CyberRT的DataVisitor和DataDispatcher
  • openwrt利用nftables在校园网环境下开启nat6 (ipv6 nat)
  • AntFlow 0.20.0版发布,增加多数据源多租户支持,进一步助力企业信息化,SAAS化
  • Python基于 Opencv+wxPython 的人脸识别上课考勤系统,附源码
  • MySQL —— MySQL 程序
  • OpenCV4.8 开发实战系列专栏之 17 - 图像直方图
  • (SAST 检测规-5)不良授权和身份验证
  • 《C++ Primer Plus》学习笔记|第9章 内存模型和名称空间 (24-12-1更新)
  • 深入理解 Docker 在 CI/CD 流程中的应用原理
  • 处理HTTP请求的两种常见方式:多个处理器(Handler)、多个处理函数(HandleFunc),两者有什么区别
  • 传智杯 A字符串拼接
  • vxe-table 树形表格的详细用法、树形表格懒加载
  • 从实战出发,精通Cache设计与性能优化
  • 【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(二)
  • 机器学习模型从理论到实战|【007-SVM 支持向量机】 SVM的情感分类
  • js常见函数实现
  • Ubuntu 操作系统
  • 基于51单片机的心率体温监测报警系统(包括程序、仿真、原理图、流程图)