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

qt QGradient详解

1、概述

QGradient是Qt框架中用于描述渐变效果的基类。渐变是一种从一个颜色平滑过渡到另一个颜色的效果,可以用于绘制图形、背景、边框等。QGradient提供了一个抽象的接口,允许子类定义具体的渐变类型,如线性渐变(QLinearGradient)、径向渐变(QRadialGradient)和锥形渐变(QConicalGradient)。

QGradient本身不能直接使用,而是需要通过其子类来创建具体的渐变对象。这些子类提供了设置渐变起点、终点、颜色停靠点等属性的方法,以及生成渐变颜色的算法。

2、重要方法

QGradient类及其子类提供了一系列方法来定义和控制渐变效果。以下是一些重要的方法:

  • setColorAt(qreal position, const QColor &color):在渐变中设置一个颜色停靠点。position是一个0到1之间的浮点数,表示颜色在渐变中的位置(0表示开始,1表示结束)。color是该位置的颜色。
  • type():返回渐变的类型(如线性、径向或锥形)。这是QGradient的一个纯虚函数,需要在子类中实现。
  • stops():返回渐变中所有颜色停靠点的列表。每个停靠点包含一个位置和一个颜色。
  • setCoordinateMode(QGradient::CoordinateMode mode):设置渐变的坐标模式。这决定了渐变是如何与绘制设备的坐标系统相关联的。
  • coordinateMode():返回当前的坐标模式。
3、重要信号

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

4、常用枚举类型

QGradient定义了一些枚举类型来描述渐变的属性和行为:

  • QGradient::Type:表示渐变的类型,包括线性渐变(LinearGradient)、径向渐变(RadialGradient)和锥形渐变(ConicalGradient)。
  • QGradient::CoordinateMode:表示渐变的坐标模式,决定了渐变是如何与绘制设备的坐标系统相关联的。常用的值包括ObjectBoundingMode(渐变与对象的边界框相关联)和LogicalMode(渐变与逻辑坐标相关联)。
  • QGradient::Spread:表示渐变在超出其定义范围时的行为。这个枚举类型在Qt的某些版本或特定子类中可能不被直接使用。
#include <QApplication>
#include <QWidget>
#include <QPainter>

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

protected:
    void paintEvent(QPaintEvent *) override {
        QPainter painter(this);
        
        // Linear gradient
        QLinearGradient linearGrad(QPointF(0, 0), QPointF(400, 0));
        linearGrad.setColorAt(0, Qt::red);
        linearGrad.setColorAt(0.5, Qt::yellow);
        linearGrad.setColorAt(1, Qt::green);
        painter.fillRect(0, 0, 400, 100, linearGrad);

        // Radial gradient
        QRadialGradient radialGrad(QPointF(200, 250), 100);
        radialGrad.setColorAt(0, Qt::white);
        radialGrad.setColorAt(0.5, Qt::blue);
        radialGrad.setColorAt(1, Qt::black);
        painter.fillRect(0, 150, 400, 200, radialGrad);

        // Conical gradient
        QConicalGradient conicalGrad(QPointF(200, 100), 0);
        conicalGrad.setColorAt(0, Qt::red);
        conicalGrad.setColorAt(0.25, Qt::yellow);
        conicalGrad.setColorAt(0.5, Qt::green);
        conicalGrad.setColorAt(0.75, Qt::blue);
        conicalGrad.setColorAt(1, Qt::red);
        painter.fillRect(0, 100, 400, 50, conicalGrad);
    }
};

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

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

           

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


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

相关文章:

  • Qt—QLineEdit 使用总结
  • Unity AssetBundles(AB包)
  • 【排序用法】.NET开源 ORM 框架 SqlSugar 系列
  • CSS函数
  • Algorithm:河内之塔
  • 防火墙iptables
  • linux基础病毒编写
  • 动态规划-----路径问题
  • 【Go底层】select原理
  • 自由学习记录(28)
  • 8 Bellman Ford算法SPFA
  • 全面解析Astra+深度相机模块:组件、功能与应用
  • 初次chronyd安装使用
  • Day 32 动态规划part01
  • 探索 SpringBoot 于 MVC 模式下高校办公室行政事务管理系统的设计与实现
  • 常见排序算法总结 (三) - 归并排序与归并分治
  • 网络安全防范技术
  • C语言基本知识2.6%g的用法
  • 【AI系统】LLVM 前端和优化层
  • 大数据新视界 -- 大数据大厂之 Hive 数据压缩:优化存储与传输的关键(上)(19/ 30)
  • Navicat连接SQL Server及SpringBoot连接SQL Server(jtds)
  • ESP32-S3模组上跑通ES8388(13)
  • Scala的模式匹配(6)
  • 【C++】LeetCode:LCR 026. 重排链表
  • Android 使用OpenGLES + MediaPlayer 获取视频截图
  • 华为服务器使用U盘重装系统