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

qt QBrush详解

1、概述

QBrush是Qt框架中的一个基本图形对象类,它主要用于定义图形的填充模式。QBrush可以用于填充如矩形、椭圆形、多边形等形状,也可以用于绘制背景等。通过QBrush,可以设置填充的颜色、样式(如实心、渐变、纹理等)、以及渐变的具体参数(如渐变方向、颜色分布等)。QBrush的使用极大地丰富了Qt图形界面的视觉效果。

2、重要方法

QBrush类提供了一系列重要的方法来设置和获取其属性,以下是一些关键的方法:

  • setColor(const QColor &color):设置QBrush的填充颜色。颜色可以是Qt预定义的颜色常量,也可以是任意QColor对象。
  • color() const:获取QBrush当前的填充颜色。
  • setStyle(Qt::BrushStyle style):设置QBrush的填充样式。Qt::BrushStyle是一个枚举类型,包括实心、斜线、网格等多种样式。
  • style() const:获取QBrush当前的填充样式。
  • setGradient(const QGradient &gradient):设置QBrush的渐变填充。渐变可以是线性渐变、锥形渐变或径向渐变。
  • gradient() const:获取QBrush当前的渐变填充。
  • setTexture(const QPixmap &pixmap):设置QBrush的纹理填充。纹理可以是任何QPixmap对象。
  • texture() const:获取QBrush当前的纹理填充。

3、重要属性
  • Qt::NoBrush:无画刷。
  • Qt::SolidPattern:纯色填充。
  • Qt::DenselPattern 到 Qt::Dense7Pattern:不同密度的点阵填充。
  • Qt::HorPattern:水平线填充。
  • Qt::VerPattern:垂直线填充:
  • Qt::CrossPattern:交叉线填充。
  • Qt::BDiagPattern:45度左斜线填充。
  • Qt::FDiagPattern:45度右斜线填充,
  • Qt::DiagCrossPattern:交叉斜线填充。
  • Qt::LinearGradientPattern:线性渐变填充。
  • Qt::RadialGradientPattern:径向渐变填充。
  • 0t::ConicalGradientPattern:锥形渐变填充。
  • Qt::TexturePattern:纹理图像填充。
#include <QApplication>
#include <QMainWindow>
#include <QWidget>
#include <QPainter>

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

        // 设置纯色画刷
        QBrush solidBrush(Qt::blue);
        painter.setBrush(solidBrush);
        painter.drawRect(10, 10, 100, 100);

        // 设置线性渐变画刷
        QLinearGradient linearGradient(200, 10, 300, 110);
        linearGradient.setColorAt(0, Qt::red);
        linearGradient.setColorAt(1, Qt::yellow);
        QBrush linearGradientBrush(linearGradient);
        painter.setBrush(linearGradientBrush);
        painter.drawRect(200, 10, 100, 100);

        // 设置图案画刷
        QBrush patternBrush(Qt::BDiagPattern);
        patternBrush.setColor(Qt::green);
        painter.setBrush(patternBrush);
        painter.drawRect(10, 150, 100, 100);

        // 设置纹理画刷
        QPixmap texturePixmap(":/images/texture.jpg");
        QBrush textureBrush(texturePixmap);
        painter.setBrush(textureBrush);
        painter.drawRect(200, 150, 100, 100);
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建主窗口
    QMainWindow mainWindow;
    mainWindow.setWindowTitle("QBrush Example");
    mainWindow.resize(400, 300);

    // 创建自定义绘图控件
    BrushDemoWidget *brushDemoWidget = new BrushDemoWidget;
    mainWindow.setCentralWidget(brushDemoWidget);

    // 显示主窗口
    mainWindow.show();

    return app.exec();
}

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

           


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

相关文章:

  • vue+django+neo4j航班智能问答知识图谱可视化系统
  • MyBatis一文入门精通,面试题(含答案)
  • html简易流程图
  • Pandas 数据可视化指南:从散点图到面积图的全面展示
  • Qt Designer客户端安装和插件集(pyqt5和pyside2)
  • 第三十一章 Vue之路由(VueRouter)
  • R 语言科研配色 --- 第 9 期
  • 基于SSM的在线作业管理系统 -octopus-master(源码+调试)
  • Go语言有哪些数据类型?
  • Java集合使用注意事项总结
  • 数据结构之二叉树--前序,中序,后序详解(含源码)
  • oracle如何在不同业务场景下正确使用聚合查询、联合查询及分组查询?
  • 使用Java实现机器学习:一个入门指南
  • JS中DOM和BOM
  • Linux常用基本指令和shell
  • RK3568平台开发系列讲解(内存篇)Linux 内存优化
  • wordpress调用指定ID分类内容 并判断第一个与其它输出不同
  • 2025年PMP考试的3A好考吗?
  • YOLO系列再创新高:迎接YOLO11的到来!
  • 再探“构造函数”(2)友元and内部类
  • 机器学习-理论学习
  • 第三十四篇:URL和URI的区别,HTTP系列一
  • 实时监控工作状态!这八款电脑监控软件助你提升效率!
  • Django+Vue全栈开发项目入门(四)
  • 【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
  • 记录|SQL中日期查询出现的问题