捕获PaintEvent()画出来的点,并实现点击弹出对话框

Thealeh 2018-12-06 10:59:50
最近一个项目在做雷达显示界面,从雷达信号处理机接收到数据之后,根据其中的角度和距离信息通过PaintEvent()事件以目标点的形式将其绘制到窗口的二维界面中,但由于一个目标还包含其他信息,现在想通过点击界面上显示出来的目标点的方式,弹出一个对话框,里面显示目标的其他信息。
请问怎样捕获PaintEvent()画出来的点,并实现点击弹出对话框?希望懂的人帮助一下,谢谢啦~~~~~~
...全文
851 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thealeh 2018-12-10
  • 打赏
  • 举报
回复
引用 4 楼 Thealeh 的回复:
[quote=引用 3 楼 南京短暂的春天 的回复:]
[quote=引用 2 楼 Thealeh 的回复:]
[quote=引用 1 楼 南京短暂的春天 的回复:]
你的界面刷新周期是多少?
建议你用QGraphicsView来做,你可以减少很多麻烦。
如果你单纯用paintEvent来做,就需要有一个容器去存放所有的点。
再到mousepressEvent中去根据点击的坐标来换算成实际数据内容。


你好,感谢你的回答,我的界面刷新周期是70ms左右,每一次刷新界面上出来最多不超过50个目标点。我没用过QGraphicsView,请问一下,用它的话,也是通过PanitEvent()事件在上面画点吗?那又怎样实现单击每个点的操作呢?
[/quote]
你这个刷的太快了。有什么东西是需要70ms的响应么?我看电视上那些雷达的画面都是十秒以上才更新下一个画面。
QGraphicsView你要看文档了,但是你这么快刷新,这个框架扛不住的。还有,你的窗口是固定大小么?[/quote]
我这个是雷达实时信号处理完了,然后发给上位机显示出来的,实时处理的速度就要求很快的。窗口是固定大小的[/quote]
不对,我搞错了,是70x250,大概17.5s刷新一次。
Thealeh 2018-12-10
  • 打赏
  • 举报
回复
引用 3 楼 南京短暂的春天 的回复:
[quote=引用 2 楼 Thealeh 的回复:]
[quote=引用 1 楼 南京短暂的春天 的回复:]
你的界面刷新周期是多少?
建议你用QGraphicsView来做,你可以减少很多麻烦。
如果你单纯用paintEvent来做,就需要有一个容器去存放所有的点。
再到mousepressEvent中去根据点击的坐标来换算成实际数据内容。


你好,感谢你的回答,我的界面刷新周期是70ms左右,每一次刷新界面上出来最多不超过50个目标点。我没用过QGraphicsView,请问一下,用它的话,也是通过PanitEvent()事件在上面画点吗?那又怎样实现单击每个点的操作呢?
[/quote]
你这个刷的太快了。有什么东西是需要70ms的响应么?我看电视上那些雷达的画面都是十秒以上才更新下一个画面。
QGraphicsView你要看文档了,但是你这么快刷新,这个框架扛不住的。还有,你的窗口是固定大小么?[/quote]
我这个是雷达实时信号处理完了,然后发给上位机显示出来的,实时处理的速度就要求很快的。窗口是固定大小的
  • 打赏
  • 举报
回复
引用 2 楼 Thealeh 的回复:
[quote=引用 1 楼 南京短暂的春天 的回复:] 你的界面刷新周期是多少? 建议你用QGraphicsView来做,你可以减少很多麻烦。 如果你单纯用paintEvent来做,就需要有一个容器去存放所有的点。 再到mousepressEvent中去根据点击的坐标来换算成实际数据内容。
你好,感谢你的回答,我的界面刷新周期是70ms左右,每一次刷新界面上出来最多不超过50个目标点。我没用过QGraphicsView,请问一下,用它的话,也是通过PanitEvent()事件在上面画点吗?那又怎样实现单击每个点的操作呢? [/quote] 你这个刷的太快了。有什么东西是需要70ms的响应么?我看电视上那些雷达的画面都是十秒以上才更新下一个画面。 QGraphicsView你要看文档了,但是你这么快刷新,这个框架扛不住的。还有,你的窗口是固定大小么?
Thealeh 2018-12-06
  • 打赏
  • 举报
回复
引用 1 楼 南京短暂的春天 的回复:
你的界面刷新周期是多少?
建议你用QGraphicsView来做,你可以减少很多麻烦。
如果你单纯用paintEvent来做,就需要有一个容器去存放所有的点。
再到mousepressEvent中去根据点击的坐标来换算成实际数据内容。


你好,感谢你的回答,我的界面刷新周期是70ms左右,每一次刷新界面上出来最多不超过50个目标点。我没用过QGraphicsView,请问一下,用它的话,也是通过PanitEvent()事件在上面画点吗?那又怎样实现单击每个点的操作呢?
  • 打赏
  • 举报
回复
你的界面刷新周期是多少? 建议你用QGraphicsView来做,你可以减少很多麻烦。 如果你单纯用paintEvent来做,就需要有一个容器去存放所有的点。 再到mousepressEvent中去根据点击的坐标来换算成实际数据内容。
资源下载链接为: https://pan.quark.cn/s/d3128e15f681 在本文中,我们将详细介绍如何利用Qt框架开发一款功能完善的图像编辑器。该编辑器允许用户通过添加图片,并在图片上绘制基本图形,如线条、矩形和圆形。Qt是一个功能强大的C++库,提供了丰富的图形用户界面(GUI)工具和绘图功能,极大地简化了此类应用的开发过程。 首先,我们需要创建一个Qt项目,并引入必要的头文件,如Painter>。QPainter是Qt绘图系统的核心类,用于在窗口或图形对象上绘制线条、形状和文本。我们可以选择QWidget或QGraphicsView作为绘图区域,用户可以在该区域进行交互操作。 接下来,我们将创建一个自定义的QWidget子类,命名为ImageEditorWidget,并重写paintEvent(QPaintEvent *)方法。在该方法中,我们将利用QPainter实例来绘制图片和用户绘制的图形。为了加载和显示图片,可以使用QImage类读取图片文件,并通过QPainter::drawImage()函数将其绘制到布上。为了实现添加图片的功能,我们需要捕获QMouseEvent事件。当用户时,可以弹出一个文件对话框,让用户选择图片,然后将图片加载到QImage对象中,并更新paintEvent()方法以便在新图片上进行绘制。 对于在图片上绘制线条、矩形和圆形的功能,我们可以通过定义多个布尔标志(如isDrawingLine、isDrawingRect、isDrawingCircle)来跟踪当前的绘图模式。在mouseMoveEvent(QMouseEvent *)中,根据当前的绘图模式,可以使用QPainter::drawLine()、QPainter::drawRect()或QPainter::drawEllip

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧