QT:QLinearGradient、QRadialGradient、QConicalGradient

QLinearGradient

QLinearGradient 是 Qt 框架中用于创建线性渐变的类,它允许在图形绘制中实现颜色沿着一条直线的平滑过渡效果。以下是关于 QLinearGradient 的详细介绍:
基本概念:线性渐变是指颜色从一个点(起始点)沿着一条直线逐渐变化到另一个点(结束点),在这个过程中可以设置多个颜色停止点,从而实现多种颜色的渐变过渡。
头文件包含:使用 QLinearGradient 时,需要包含相应的头文件 。

QLinearGradient::QLinearGradient(qreal x1, qreal y1, qreal x2, qreal y2)

x1、y1 是起始点的坐标,x2、y2 是结束点的坐标。例如,QLinearGradient gradient(0, 0, 100, 100); 表示从点 (0, 0) 到点 (100, 100) 的线性渐变。

设置颜色停止点

设置颜色停止点:可以使用 setColorAt() 函数来设置渐变过程中的颜色停止点。该函数接受两个参数,第一个参数是一个介于 0.0 到 1.0 之间的浮点数,表示颜色停止点在渐变直线上的位置(0.0 表示起始点,1.0 表示结束点);第二个参数是 QColor 类型,表示在该位置的颜色。

main.cpp

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

class GradientWidget : public QWidget {
public:
    GradientWidget(QWidget *parent = nullptr) : QWidget(parent) {}

protected:
    void paintEvent(QPaintEvent *event) override {
        Q_UNUSED(event);
        QPainter painter(this);

        // 创建一个线性渐变对象
        // 起始点为 (0, 0),结束点为 (width(), 0),表示水平方向的渐变
        QLinearGradient gradient(0, 0, width(), 0);

        // 设置渐变的颜色停止点
        // 在起始位置(0.0)设置颜色为红色
        gradient.setColorAt(0.0, Qt::red);
        // 在中间位置(0.5)设置颜色为绿色
        gradient.setColorAt(0.5, Qt::green);
        // 在结束位置(1.0)设置颜色为蓝色
        gradient.setColorAt(1.0, Qt::blue);

        // 设置画笔颜色为透明,这样就不会有边框
        painter.setPen(Qt::NoPen);
        // 设置画刷为渐变对象,用于填充图形
        painter.setBrush(gradient);
        // 绘制一个矩形,填充渐变颜色
        painter.drawRect(0, 0, width(), height());
    }
};

int main(int argc, char *argv[]) {
    QApplicati
QRadialGradientQt中的一个类,用于创建径向渐变效果。它可以在一个圆形区域内从一个颜色渐变到另一个颜色。\[1\]在Qt中,可以通过设置中心点、半径和颜色来定义QRadialGradient。\[1\]例如,在Qt的paintEvent函数中,可以使用QRadialGradient来创建一个辐射渐变的效果。\[1\]另外,也可以通过在Qt样式表中使用qradialgradient属性来实现径向渐变的效果。\[2\]总的来说,QRadialGradient是一种用于创建圆形渐变效果的工具,可以在Qt中使用。 #### 引用[.reference_title] - *1* [QT中的渐变填充类QGradient](https://blog.csdn.net/qq_38211856/article/details/111463571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [QT样式表之径向渐变(qradialgradient)](https://blog.csdn.net/jolin678/article/details/118249643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Qt支持3种渐变](https://blog.csdn.net/liuying263/article/details/127265469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li星野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值