跳转到主内容
极星编程网:以代码为星,赴技术山海!

Qt绘图,你真的懂了吗?

绘图基础

虽然 Qt 已经内置了很多的控件,但是不能保证现有控件就可以应对所有场景。很多时候我们需要更强的 “自定制” 能力。Qt 提供了画图相关的 API,允许我们在窗口上绘制任意的图形形状来完成更复杂的界面设计。所谓的 “控件” 本质上也是通过画图的方式画上去的。

绘图 API 核心类

  • QPainter:'绘画者' 或者 '画家'。用来绘图的对象,提供了一系列 drawXXX 方法,可以允许我们绘制各种图形。
  • QPaintDevice:'画板'。描述了 QPainter 把图形画到哪个对象上。像咱们之前用过的 QWidget 也是一种 QPaintDevice (QWidget 是 QPaintDevice 的子类)。
  • QPen:'画笔'。描述了 QPainter 画出来的线是什么样的。
  • QBrush:'画刷'。描述了 QPainter 填充一个区域是什么样的。

绘制各种形状

绘制线段

void drawLine(const QPoint &p1, const QPoint &p2);
void drawLine ( int x1, int y1, int x2, int y2 );

绘制矩形

void QPainter::drawRect(int x, int y, int width, int height);

绘制圆形

void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)

绘制文本

QPainter 类中不仅提供了绘制图形的功能,还可以使用 QPainter::drawText() 函数来绘制文字,也可以使用 QPainter::setFont() 设置字体等信息。

设置画笔

QPainter 在绘制时,是有一个默认的画笔的。在使用时也可以自定义画笔。在 Qt 中,QPen 类中定义了 QPainter 应该如何绘制形状、线条和轮廓。同时通过 QPen 类可以设置画笔的线宽、颜色、样式、画刷等。

设置画刷

在 Qt 中,画刷是使用 QBrush 类来描述,画刷大多用于填充。QBrush 定义了 QPainter 的填充模式,具有样式、颜色、渐变以及纹理等属性。

绘制图片

Qt 提供了四个类来处理图像数据:QImage、QPixmap、QBitmap 和 QPicture

其他设置

移动画家位置

有时候在绘制多个图形时,想使用同一坐标位置,那么绘制出来的图形肯定会重合,此时,可以通过移动画家的位置来使图形不发生重合。

保存 / 加载画家的状态

在绘制图形的过程中,可以通过 save() 函数来保存画家的状态,使用 restore() 函数还原画家状态。

特殊的绘图设备

QPixmap

QPixmap 核心特性:使用 QPainter 直接在上面进行绘制图形。通过文件路径加载并显示图片。搭配 QPainter 的 drawPixmap() 函数,可以把这个图片绘制到一个 QLabel、QPushButton 等控件上。和系统 / 显示设备强相关,不同系统 / 显示设备下,QPixmap 的显示可能会有所差别。

QImage

QImage 的核心特性:使用 QPainter 直接在上面进行绘制图形。通过文件路径加载并显示图片。能够针对图片进行像素级别的操作(操作某个指定的像素)。

QPicture

QPicture 核心特性:使用 QPainter 直接在上面进行绘制图形。通过文件路径加载并显示图片。能够记录 QPainter 的操作步骤。

💡:Qt 中对于界面的优化美化,还涉及到很多其他的话题,如果在工作中如果涉及到了,再针对性学习即可。

Qt 动画

Qt 3D 图形

QQuick

使用第三方控件库

Qt Design Studio

——苏承栈 / 极星编程网

相关文章