首页 > 其他分享 >Qt之2D绘图

Qt之2D绘图

时间:2023-02-18 19:01:19浏览次数:31  
标签:Qt 2D QPaintDevice 绘图 QPainter 绘制 painter 构造函数

  • QPaintDevice提供绘图设备,它是一个抽象的二维空间,可以使用QPainter在其上进行绘制;QPaintDevice类是所有可以进行绘制的对象的基类,它的子类主要有QWidget,QPixmap,QImage,QPrinter和QOpenGLPainterDevice等。
  • QPaintEngine则提供了一些接口,用于QPainter和QPaintDevice内部,使得QPainter可以在不同的设备上进行绘制。除了要创建自定义的绘图设备外,一般编程中不需要使用该类。
  • QPainter一般在一个部件重绘事件的处理函数paintEvent()中进行绘制操作。首先创建QPainter对象,图形绘制完成后再销毁QPainter对象。
  • 使用QPainter::QPainter(QPaintDevice * device)构造函数创建的QPainter实例对象会立即开始在设备上进行绘制,自动调用begin()函数,然后在QPainter的析构函数中调用end()函数结束绘制。
  • 如果在构建QPainter对象时不想指定绘图设备,那么可以使用不带参数的构造函数,然后使用QPainter::begin(QPaintDevice * device)开始在指定设备上进行绘制操作,等绘制完成后再调用end()函数结束绘制。
void Widget::paintEvent(QPaintEvent *event){
QPainter painter(this);
painter.drawLine(QPoint(0, 0), QPoint(100, 100));

QPen pen(Qt::green, 5, Qt::DotLine, Qt::RoundCap,
Qt::RoundJoin);
// QPen类的构造函数为QPen::QPen(QBrush, Width, PenStyle,
PenCapStyle, PenJoinStyle)
painter.setPen(pen); // 使用画笔
QRectF rectangle(70.0, 40.0, 80.0, 60.0);// (x, y, width, height)
int startAngle = 30 * 16; // 圆弧的起始角度
int spanAngle = 120 * 16; // 圆弧的张开角度
painter.drawArc(rectangle, startAngle, spanAngle);
}
void Widget::paintEvent(QPaintEvent *event){
QPainter painter; // 使用不带参的构造函数创建QPainter实例对象
painter.begin(this);
painter.drawLine(QPoint(0, 0), QPoint(100, 100));
painter.end();
}

Qt之2D绘图_Qt

标签:Qt,2D,QPaintDevice,绘图,QPainter,绘制,painter,构造函数
From: https://blog.51cto.com/u_15515702/6065500

相关文章

  • Qt简单版贪吃?游戏
    Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);resize(480,500);//设置窗体背景色为黑色setStyleShee......
  • Martial Arts Tournament (CF2D) (2^条件性质, 问题切入的基点转化)
     思路:首先对队列大小排序(预处理)直接对队列进行分割,情况很多利用2^ni这个优秀的复杂度,种类很小转换枚举对象暴力枚举这个2段这个即可,中间处理利用二......
  • QT主窗口关闭,同时关闭打开的子窗体
    问题描述:QT主窗口关闭,但打开的子窗体未关闭。解决方式:在子窗体的构造函数中,设置如下属性:this->setAttribute(Qt::WA_QuitOnClose,false);原理解释:我们可以发现,在主窗体......
  • qt的属性,动态属性,与样式表。
    首先参考两篇博客:Qt中的属性系统:https://blog.csdn.net/libaineu2004/article/details/88106976https://blog.csdn.net/feiyangqingyun/article/details/121177993总结:......
  • QT——setMouseTracking函数
    (一)介绍首先介绍一个变量boolmouseTracking,这个变量保存值表示窗口部件跟踪鼠标是否生效。可以通过函数setMouseTracking()来设置其值,可以通过函数hasMouseTracking()来获......
  • Halcon与Qt之间的数据类型转换
    【HTuple与QString】(QString)hv_result[0].S();//HTuple转QStringhv_ImagePath=modelImagePath.toStdString().c_str();//QString转HTuple【HTuple与int】hv......
  • 【MATLAB】绘图
    1绘图命令Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:线型颜色标记符号- 实线b蓝色.  点s方块: 虚线g绿色o圆圈......
  • Qt Embedded之一:简介与平台插件介绍
    常见的嵌入式Linux图形界面有Qt/Embedded、DirectFB、MicroWindows/NanoX、MiniGUI和OpenGUI等,每个GUI都有各自不同特点和应用场合,在应用编程上也各不相同。而对于......
  • Qt Embedded之二:Input 输入系统
    相对于没有视窗系统,鼠标、键盘、触摸板输入直接从evdev读取或者使用第三方的库实现比如libinput、tslib。这需要/dev/input/event*可以被用户读取。Eglfs和Linuxfb内部......
  • win64环境下监听键盘操作并发送MQTT消息
    1.MQTT服务安装下载EMQX做MQTT代理服务器https://www.emqx.cn/downloads/broker/v4.2.7/emqx-centos7-4.2.7-x86_64.zip解压安装即可启动MQTT服务器在emqx/bin目录下......