首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QOpenGLWidget QPainter::drawRect仅绘制四个箭头

QOpenGLWidget是Qt框架中的一个类,用于在OpenGL上下文中显示和渲染图形。QPainter是Qt框架中的一个绘图工具类,用于在各种绘图设备上进行2D绘制操作。

QPainter::drawRect是QPainter类中的一个函数,用于在绘图设备上绘制一个矩形。该函数接受一个QRectF对象作为参数,表示要绘制的矩形的位置和大小。

"仅绘制四个箭头"这句话不太明确,可能是指在矩形的四个边上绘制箭头。如果是这样的话,可以通过在绘制矩形的四条边上绘制箭头的方式来实现。

以下是一个示例代码,演示了如何使用QPainter::drawRect函数在QOpenGLWidget上绘制一个矩形,并在矩形的四个边上绘制箭头:

代码语言:txt
复制
void MyOpenGLWidget::paintEvent(QPaintEvent *event) {
    QOpenGLWidget::paintEvent(event);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);

    QRectF rect(50, 50, 200, 100);
    painter.drawRect(rect);

    // 绘制箭头
    drawArrow(painter, rect.topLeft(), rect.topRight());
    drawArrow(painter, rect.topRight(), rect.bottomRight());
    drawArrow(painter, rect.bottomRight(), rect.bottomLeft());
    drawArrow(painter, rect.bottomLeft(), rect.topLeft());
}

void MyOpenGLWidget::drawArrow(QPainter &painter, const QPointF &start, const QPointF &end) {
    qreal arrowSize = 10;

    QLineF line(start, end);
    painter.drawLine(line);

    QPointF arrowP1 = line.p1() + (line.unitVector().normalVector() * arrowSize);
    QPointF arrowP2 = line.p1() + (line.unitVector().normalVector() * -arrowSize);
    QPolygonF arrowHead;
    arrowHead << line.p1() << arrowP1 << arrowP2;
    painter.drawPolygon(arrowHead);
}

在这个示例中,首先创建一个QRectF对象表示矩形的位置和大小,然后使用QPainter::drawRect函数在QOpenGLWidget上绘制该矩形。接着,通过调用自定义的drawArrow函数,在矩形的四个边上绘制箭头。

这只是一个简单的示例,实际应用中可能需要根据具体需求进行更复杂的绘制操作。关于QOpenGLWidget和QPainter的更多详细信息,可以参考腾讯云的Qt文档:QOpenGLWidgetQPainter

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Qt音视频开发44-实时人脸框

,人脸框的数据主要是四个参数,左上角和右下角的位置,也可以说是x、y、width、height,可能有些做的比较好的还有倾斜角度,这个意义不是很大,人脸识别的速度一般都是飞快的,就算你用学习上用的opencv...用Qt来绘制人脸框,核心就是一个函数,调用QPainter的drawRect方法,传入区域即可,如果花哨点的话还可以设置边框的粗细和颜色、圆角角度等,注意圆角角度使用的是drawRoundedRect而不是...总体测试下来速度非常快,可以忽略,采用的QOPenGLWidget绘制的实时图像,也支持人脸框的绘制。 二、功能特点 支持的功能包括人脸识别、人脸比对、人脸搜索、活体检测等。...| QPainter::SmoothPixmapTransform); //绘制边框 drawBorder(&painter);...(); } void FFmpegWidget::drawBg(QPainter *painter) { painter->save(); //背景图片为空则绘制文字,否则绘制背景图片

1.3K01

Qt 之图形(QPainter 的基本绘图)「建议收藏」

绘图系统由 QPainter 完成具体的绘制操作,QPainter 类提供了大量高度优化的函数来完成 GUI 编程所需要的大部分绘制工作。...QPainter 一般在部件的绘图事件 paintEvent() 中进行绘制,首先创建 QPainter 对象,然后进行图形的绘制,最后记得销毁 QPainter 对象。...然后使用setBrush() 来设置画刷颜色(橙色),用来填充矩形区域,最后调用 drawRect() 来实现矩形的绘制,其中参数依次顺序为 x、y、w、h,是指区域从 x 为 50,y 为 50 的坐标点起...painter.drawPolygon(points, 4); } 首先,我们定义一个个坐标点的位置,这里有四个点,分别为:QPointF(30, 40)、QPointF(60, 150)、QPointF...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

6.3K42
  • Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)

    、QBrush和QPixmap这四个类来实现绘图功能。...1、QPainter绘图类 QPainter类在QWidget(控件)上执行绘图操作,它是一个绘制工具,为大部分图形界面提供了高度优化的函数,使QPainter类可以绘制从简单的直线到复杂的饼图等。...绘制操作在QWidget.paintEvent()中完成,绘制方法必须放在QtGui.QPainter对象的begin()和end()之间QPainter类在控件或其他绘图设备上执行较低级别的图形绘制功能...绘制文字,实质上文字在屏幕上的显示是由一个个点(point)组成的,来看看QPainter如何绘制点。...定义QBrush 对象,然后将QPainter对象的画刷设置成QBrush 对象,并通过调用drawRect()方法绘制矩形。

    2.7K41

    Qt苹果按钮滑动样式绘制

    用到的类:QTimer,QPaintEvent,QPainter,QRectF ? 首先,重写绘制事件,需要在头文件加入QPaintEvent头文件,并定义几个变量。...painter(this); painter.setRenderHint(QPainter::SmoothPixmapTransform); //QPainter::SmoothPixmapTransform...painter.setRenderHint(QPainter::Antialiasing); //使绘制时边缘平滑,qt反走样默认关闭 painter.setPen(Qt::NoPen);//画笔样式...} 绘制矩形:paint->drawRect(20,20,160,160); 第1、2个参数制定矩形的左上角起点,第3个参数制定矩形的长度,第4个参数指定矩形的宽度 绘制圆和椭圆:paint...绘制圆角矩形:paint->drawRoundRect(20,20,210,160,50,50); 前面四个参数和绘制矩形的参数一致,最后两个参数决定角的圆度。

    1.7K41

    Qt自绘实现苹果按钮滑动效果

    用到的类:QTimer,QPaintEvent,QPainter,QRectF ? 首先,重写绘制事件,需要在头文件加入QPaintEvent头文件,并定义几个变量。...painter(this); painter.setRenderHint(QPainter::SmoothPixmapTransform); //QPainter::SmoothPixmapTransform...painter.setRenderHint(QPainter::Antialiasing); //使绘制时边缘平滑,qt反走样默认关闭 painter.setPen(Qt::NoPen);//画笔样式...} 绘制矩形:paint->drawRect(20,20,160,160); 第1、2个参数制定矩形的左上角起点,第3个参数制定矩形的长度,第4个参数指定矩形的宽度 绘制圆和椭圆:paint...绘制圆角矩形:paint->drawRoundRect(20,20,210,160,50,50); 前面四个参数和绘制矩形的参数一致,最后两个参数决定角的圆度。

    1.2K21

    《突破控件限制:用Qt绘图API解锁高级界面定制能力》

    绘制矩形 void QPainter::drawRect(int x, int y, int width, int height); 参数: x:窗口横坐标; y:窗口纵坐标;...painter.drawRect(100, 100, 300, 200); } 运行程序,如下: 3....绘制文本 QPainter 类中不仅提供了绘制图形的功能,还可以使用 QPainter::drawText() 函数来绘制文字,也可以使用 QPainter::setFont() 设置字体等信息。...设置画笔 QPainter 在绘制时,是有一个默认的画笔的。在使用时也可以自定义画笔。在 Qt 中,QPen 类中定义了 QPainter 应该如何绘制形状、线条和轮廓。...Qt 提供了四个类来处理图像数据:QImage、QPixmap、QBitmap 和 QPicture 其中QImage主要用来进行 I/O 处理,它对 I/O 处理操作进行了优化,而且可以用来直接访问和操作像素

    25310

    PyQt 截图小工具

    主要原因有三点:窗口透明与事件拦截:Qt 支持透明窗口、鼠标穿透和拦截,可自定义截图蒙层;强大的绘图 API:QPainter + QPixmap 组合,可高效实现涂鸦与文字绘制;系统交互:Qt 提供对剪贴板...) pen = QPen(QColor(255,255,255), 2) painter.setPen(pen) painter.drawRect...八、文字标注与多种绘制工具涂鸦之后,最常用的是在截图上添加文字说明或箭头指示。为此,我在注释画布中增加工具栏,用户可切换“画笔模式”和“文本模式”。1....绘制到临时层。...可以根据需要拓展“箭头工具”“矩形工具”,同理实现。九、一键保存与复制到剪贴板完成标注后,用户最关心的就是“保存本地”或“一键复制”。1.

    16300
    领券