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