Qt QPainter的使用方法

 更新时间:2024年03月07日 08:52:58   作者:qq_1410888563  
QPainter是Qt的一个绘图类,它的主要任务是在绘图设备上进行2D图形渲染,本文主要介绍了Qt QPainter的使用方法,具有一定的参考价值,感兴趣的可以了解一下

重点:

1.QPainter在QWidget窗口的paintEvent中使用。

2.QPainter通常涉及到设置画笔、设置画刷、绘图(QPen、QBrush、drawxx)三个流程。

class Widget : public QWidget
{
    Q_OBJECT


protected:
    void    paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};


oid Widget::paintEvent(QPaintEvent *event)
{
   QPainter    painter(this);  //创建QPainter对象
   painter.setRenderHint(QPainter::Antialiasing);
   painter.setRenderHint(QPainter::TextAntialiasing);
   
   int W=this->width();    //绘图区宽度
   int H=this->height();   //绘图区高度
   QRect   rect(W/4,H/4,W/2,H/2);  //中间区域矩形框
   
   //设置画笔
   QPen    pen;
   pen.setWidth(3);        //线宽
   pen.setColor(Qt::red);  //划线颜色
   pen.setStyle(Qt::SolidLine);    //线的样式,实线、虚线等
   pen.setCapStyle(Qt::FlatCap);   //线端点样式
   pen.setJoinStyle(Qt::BevelJoin);    //线的连接点样式
   painter.setPen(pen);
   
   //设置画刷
   QBrush  brush;
   brush.setColor(Qt::yellow); //画刷颜色
   brush.setStyle(Qt::SolidPattern); //画刷填充样式
   painter.setBrush(brush);
   
   //绘图
   painter.drawRect(rect);     //填充定义的渐变区域
   
    event->accept();
}

其中QPen设计三种方式:

 其中QBrush主要函数有:

 画刷的样式内容如下:

 其中材质(setTexture)的填充方法如下:

   //设置画刷
    QPixmap texturePixmap(":images/images/texture.jpg");
    QBrush  brush;
    brush.setStyle(Qt::TexturePattern);     //画刷填充样式
    brush.setTexture(texturePixmap);        //设置材质图片
    painter.setBrush(brush);

继承画刷的子类有三种,主要是渐变填充效果(具体设置看代码的构造使用方法)

最后绘图 painter.drawRect(rect);   则包含多种绘制的方式有drawPoint(),drawLine(),drawArc()等等。

到此这篇关于Qt QPainter的使用方法的文章就介绍到这了,更多相关Qt QPainter内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈C++中thread库join和detach的区别

    浅谈C++中thread库join和detach的区别

    这篇文章主要为大家介绍了C++中thread库join和detach的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • C语言刷题之倒置字符串的解题全过程

    C语言刷题之倒置字符串的解题全过程

    这篇文章主要给大家介绍了关于C语言刷题之倒置字符串的解题全过程,这是一道我们经常刷到的实战题目,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • C语言实现opencv提取直线、轮廓及ROI实例详解

    C语言实现opencv提取直线、轮廓及ROI实例详解

    这篇文章主要介绍了C语言实现opencv提取直线、轮廓及ROI实例详解,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • C++控制台用定时器实例代码

    C++控制台用定时器实例代码

    这篇文章主要介绍了C++控制台用定时器实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • C++中的作用域案例详解

    C++中的作用域案例详解

    作用域规定了标识符在代码中的可见性和可访问性,全局作用域中的标识符可以在整个程序中使用,局部作用域中的标识符只能在其所在的代码块中使用,而命名空间作用域提供了一种组织和封装代码的方式,以避免命名冲突,这篇文章主要介绍了C++中的作用域,需要的朋友可以参考下
    2024-02-02
  • C++ const的各种用法详解

    C++ const的各种用法详解

    const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。本文主要谈谈const的用法,感兴趣的同学可以参考阅读
    2023-04-04
  • C++详细讲解对象的构造

    C++详细讲解对象的构造

    当在参数化构造函数中声明对象时,必须将初始值作为参数传递给构造函数。对象声明的常规方法可能不起作用。构造函数可以显式或隐式调用,让我们一起了解对象的构造
    2022-04-04
  • 深入C++可见性与生命期的区别详解

    深入C++可见性与生命期的区别详解

    本篇文章对C++中可见性与生命期的区别进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++ spdlog 日志库使用小结

    C++ spdlog 日志库使用小结

    spdlog是目前 C++ 生态中性能最高(每秒可处理数百万条消息)、使用最广泛的现代日志库之一,下面就来详细的介绍下spdlog 日志库使用,感兴趣的可以了解一下
    2026-06-06
  • 在Qt中使用QString进行字符串截取的多种方法

    在Qt中使用QString进行字符串截取的多种方法

    本文详细介绍了在Qt中使用QString进行字符串截取的多种方法:left()和right()分别用于截取字符串的左右指定长度子串;mid()支持从任意位置截取;section()通过分隔符提取特定区段;chopped()可快速移除末尾字符,文章通过代码示例展示了各方法的用法
    2026-01-01

最新评论