千家信息网

Qt如何实现基础图形绘制

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"Qt如何实现基础图形绘制",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Qt如何实现基础图形绘制"这篇文章吧。一.基础图形绘制A.
千家信息网最后更新 2026年11月03日Qt如何实现基础图形绘制

这篇文章主要为大家展示了"Qt如何实现基础图形绘制",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Qt如何实现基础图形绘制"这篇文章吧。

一.基础图形绘制

A.Qt图形系统中的关键角色
QPainter--Qt中的画家,能够绘制各种基础图形 ,拥有绘图所需的画笔、画刷、字体
QPaintDevice--Qt中的画布,画家的绘图板,所有的QWidget类都继承自QPaintDevice
Qt图形系统中的关键角色

Qt中所使用的工具
1.QPen-用于绘制几何图形的边缘,由颜色、宽度、线风格等参数组成
2.QBrush-用于填充几何图形的调色板,由颜色和填充风格组成
3.QFont-用于文本绘制,由字体属性组成

需要注意的是--只能在QWidget::paintEvent中绘制图形

B.Qt图形系统中的坐标系
1.物理坐标系--原点(0,0)在左上角的位置,单位是像素并且X坐标向右增长,Y坐标向下增长
2.逻辑坐标系--数学模型中的抽象坐标系,单位由具体问题决定,坐标轴的增长方向由具体问题决定
我们需要注意的是QPainter使用逻辑坐标系绘制图形,逻辑坐标系中图形的大小和位置经由转换后绘制于具体设备,且在默认情况下的逻辑坐标与物理坐标系完全一致
C.视口与窗口
1.视口--物理坐标系中一个任意指定的矩形
2.窗口--逻辑坐标系下对应到物理坐标系中的相同矩形
深入理解视口与窗口
1.视口与窗口是不同坐标系中的同一个矩形
2.视口与窗口中的坐标点存在一一映射的关系
3.视口与窗口能够通过坐标转换而相互转换

视口与窗口的变换方法
1.定义视口--左上角坐标,右下角坐标,计算宽度和高度
2.定义窗口--左上角坐标,右下角坐标,计算宽度和高度
代码示例

Widget.cpp#include "Widget.h"#include #include #include #include Widget::Widget(QWidget *parent)    : QWidget(parent){}void Widget::paintEvent(QPaintEvent *){    //绘图工具的基本设置    QPainter painter(this);    QPen pen;    pen.setColor(Qt::green);    pen.setStyle(Qt::SolidLine);    pen.setWidthF(0.01);    painter.setPen(pen);    painter.setViewport(50, 50, width()-100, height()-100);//视图    painter.setWindow(-10, 2, 20, -4); //窗口    painter.fillRect(-10, 2, 20, -4, Qt::black);    painter.drawLine(QPointF(-10, 0), QPointF(10, 0));   // x    painter.drawLine(QPointF(0, 2), QPointF(0, -2));     // y    for(float x=-10; x<10; x+=0.01)    {        float y = qSin(x);        painter.drawPoint(QPointF(x, y));    }}Widget::~Widget(){}

运行结果如图所示

C.实例实现--简单的绘图程序
我们需要的功能--自由的绘制图形,并且能够选择图形绘制颜色
a.界面的选择
1.以QWidget为基类创建绘图主窗口
2.使用QGroupBox创建图形设置区域
3.使用单选QRadioBox实现目标图形的选择
4.使用组合框QCombox实现绘图颜色的选择
b.自由绘图的主要实现
1.以鼠标按下为开始,记录开始坐标--mousePressEvent
2.记录鼠标移动时经过的像素坐标--mouseMoveEvent
3.以鼠标释放为结束,记录坐标--mouseReleaseEvent
4.按照记录顺序在两两坐标之间绘制直线--painEevent
c.基础图形的绘制与自由绘图类似
1.以鼠标按下为开始,记录开始坐标--mousePressEvent
2.将鼠标移动时经过的每个坐标作为临时结束坐标--mouseMoveEvent
3.以鼠标释放为结束,确定最终结束坐标--mouseReleaseEvent
4.在开始坐标和结束坐标之间绘制目标图形--painEevent
实现的程序运行图如下

以上是"Qt如何实现基础图形绘制"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

坐标 图形 坐标系 视口 绘图 基础 鼠标 逻辑 物理 颜色 选择 自由 内容 宽度 左上角 矩形 篇文章 系统 增长 几何图形 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 南京欣网互联网络科技有限公司 涨乐互联网科技 疫情对互联网科技公司影响 互联网科技社 互联网金融公司科技 济南华为互联网科技产业总部基地 华服互联网科技官网 成都铂石互联网科技做什么的 互联网和黑科技的看法 未来五年的互联网科技 广州市恰铎互联网科技有限公司 开一家科技互联网公司需要多少钱 国大互联网教育科技有限公司工作 伊宁互联网科技做什么的 深圳无忧互联网科技 从那以后互联网科技有限公司 互联网金融运营模式中的金融科技 互联网的黑科技实验室 小牛互联网科技有限公司地址 南京欣网互联网络科技 互联网科技有限公司图片 互联网巨头反垄断金融科技 互联网金融公司科技 合肥互联网科技公司 天下捷融互联网科技 互联网前沿科技 银川新华互联网科技学校地址 北京华百购互联网科技有限公司 互联网科技创业有什么好项目
0