在qt中的绘图中拖动错误栏 我在QT 5.9中使用QPrice,用C++编写一个情节并根据鼠标事件更新它。
我想知道如何绘制类似以下内容的错误条:在qt中的绘图中拖动错误栏 我在QT 5.9中使用QPrice,用C++编写一个情节并根据鼠标事件更新它。,c++,qt,qt5,qpainter,C++,Qt,Qt5,Qpainter,我想知道如何绘制类似以下内容的错误条: - | - 当然,垂直线和水平线之间不应该有间隙 我需要能够在绘图上拖动错误条,并在释放鼠标按钮时获得错误条中心位置的坐标。到目前为止,我已经用轴和标签绘制了一个图。不确定如何使用QPaint或任何其他Qt库类获取错误栏 请提供一些关于如何制作/绘制错误条的见解。在QPainter中有没有一种简单的方法可以做到这一点 对于以前没有使用过Qt的人来说,这将是一个相当复杂的项目 您将希望在所有可能性中使用,而不是QPainter示例。对于交互式示例,Qgra
-
|
-
当然,垂直线和水平线之间不应该有间隙
我需要能够在绘图上拖动错误条,并在释放鼠标按钮时获得错误条中心位置的坐标。到目前为止,我已经用轴和标签绘制了一个图。不确定如何使用QPaint或任何其他Qt库类获取错误栏
请提供一些关于如何制作/绘制错误条的见解。在QPainter中有没有一种简单的方法可以做到这一点
所有这些都是如何实现可拖动功能以创建交互式绘图的极好起点。Qt使一般意义上的绘图变得容易:然而,对于许多绘图功能(至少在QtCharts之前),Qt比专门的绘图库困难得多。如果您使用QPaint,您应该自己实现拖放功能。如果你的绘图上没有太多的对象,这并不难 基本思路如下: 首先渲染所有对象。然后需要在绘图小部件中重新实现
mousePressEvent
和mouseMoveEvent
。在mousePressEvent
中,您应该检查是否单击了可拖动对象,并将此对象定义为当前正在拖动。在mouseMoveEvent
中,只需通过更改其坐标和重新渲染绘图来移动此对象(如果有)
您可能希望优化打印,以避免在每次鼠标移动时重新渲染完整的打印。这可以通过以下方式实现:绘制很少更改的对象到QPixmap
/QImage
,在小部件上呈现此QPixmap
/QImage
,绘制错误条和在每次鼠标移动勾选此pixmap时可能更改的所有其他类型的对象。在每次重新绘制时,您需要定义是否只需要重新绘制错误条(或其他一些动态对象)或所有小部件。我个人通过定义bool needFullRepaint
来实现这一点,在每次渲染勾选后,小部件将其设置为false
,在小部件中的某些数据更改后,将其设置为true
这是一种低级的方法,它需要高水平的技能和花费一些时间,但您将获得对呈现和与小部件交互的最大控制权,这在
qgraphicscene
或QCharts
中并不总是可能实现,谢谢您的帮助。我已经使用QPaint运行了绘图。转移到QChart会有太多额外的努力。我想有办法,但我可能无法把它拖来拖去。请告诉我您是否可以想出一种方法,使用QPaint通过鼠标单击拖动一个点。您可以,但这将意味着存储状态并重新实现paintEvent()
,然后根据存储的数据有条件地绘制项目。这是非常可行的,只是需要做更多的工作。我可以给你一些小部件的例子,谢谢。所以我现在确实有了这样的结构,并且基本的活动都在进行中。我只是不知道如何制作误差条。我一直在努力工作,但一直没能做好。你到底能做什么?使用QPaint::drawLine作为最简单的方法来渲染问题中的图形,以生成错误条。所有的线路都乱了。