问题标签 [qgraphicspathitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1381 浏览

python - 创建后如何移动 Qt QPainterPath 中的点?

我通过向构造函数传递一个包含大约 10 个 QPoint 的 QPainterPath 创建了一个 QGraphicsPathItem。现在我怎样才能移动路径中的点?

例如:

这将创建一个盒子:

现在经过一段时间后,我想通过抓住右上方和右下方的点并将它们向右移动来使这个框更宽。我怎样才能获得积分?QPainterPath 的 Qt 文档表明这path.elementAt(i)是在路径中访问数据的方式,但它返回一个 QElementObject 并且我找不到太多关于“元素对象”的文档,而且它绝对不是 QPointF(这是我所期望的)得到......对吗?)。那么我怎样才能从这个元素中得到一个 QPointF 呢?一旦我得到了分数,是否可以只调用它们QPointF.setX()并且QPointF.setY()该线将重新绘制,或者我是否需要通过新的调用将其重新设置为 QGraphicsPathItem line.setPath()

请注意,这是 PyQt4,python 2.7。但是,如果您有 C++ 答案,我会接受它,尽管我根本不懂 C++,但它似乎很容易翻译。

0 投票
2 回答
974 浏览

python - 鼠标悬停在 PySide QGraphicsPathItem

当我尝试在 QGraphicsPathItem 上注册鼠标悬停事件时,我遇到了奇怪的行为。

在示例代码(我从 qt5 弹性节点示例中破解)中,我绘制了一条简单的曲线。悬停在曲线上会改变曲线的颜色,但悬停事件不会记录在曲线的右下半部分。此外,只有曲线的左上半部分实际改变了颜色。

我添加了一个 QPainterPathStroker 认为悬停事件会在该区域内注册,但事实并非如此。

我的目标是让鼠标移动进出 QPainterPathStroker 区域注册为 QGraphicsPathItem 上的悬停事件。

任何帮助表示赞赏。谢谢

0 投票
1 回答
185 浏览

pyqt - pyside2 QGraphicsPathItem WindingFill

嗨,我有一个关于如何在 pyside2 (pyqt) 中正确填充 QGraphicsPathItem 的问题。目前我正在编写一个 gerber 文件可视化工具,对于具有多个几何形状的形状,我正在使用路径将它们作为一个对象。

虽然在填充项目时,它会在一些但不是所有路径区域留下空隙。填充对象标记为 1,2 和 3 的对象区域的所有单路径对象都以相同的方式创建,但填充方式不同。这是使用填充规则 Qt.WindingFill。

1) 正确填写

2)圆圈与其他 1 个对象重叠的地方很清楚,但在与其他 2 个对象重叠的地方被填充(这看起来像oddevenfill)

3)我不能说这里发生了什么我不知道

这是路径如何构建的粗略过程,它只是一个矩形,然后是另一个横向分层,角落上有 4 个圆圈 在此处输入图像描述

供参考的最小代码示例: 在此处输入图像描述

我已经尝试过只使用单个对象,所以 2 个 QgraphicsRectItems 和 4 个椭圆项目,最终结果很好,但是我有 6 个超过 1 的对象,并且可能有数千个这样的对象,所以性能是使用路径项目超过负载的痛苦原因单项。

所以我要总结的问题是为什么它以不同的方式填充它们,有没有办法让它不那样做?

0 投票
1 回答
153 浏览

python - QGraphicsPathItem 计算 boundingRect 的问题

Qt5我对( PySide2) 和Qt4( )之间的行为差​​异感到困惑PySide。我得到的印象是Qt5有错误,但也许我做错了什么?

简而言之:当QPainterPath对 a 应用计算时QGraphicsPathItem(使用setPath),得到的大小QGraphicsPathItem比自身的大小QPainterPath1.5 个像素。这对我来说毫无意义,而 Qt4 的大小完全相同。

我提供了一段简单的代码来重现 PySide 和 PySide2。

使用 PySide:

结果是:

大小相同,符合预期。都好。

与 Qt5 完全相同的代码:

结果是:

有没有人看到任何明显的解释?

谢谢

0 投票
1 回答
62 浏览

python - QGraphicsPathItem .setPen() impacts text style

stack overflow community. Let me explain my question refering to the code snipped below

My problem is that the lines:

  • pen=QtGui.QPen(QtGui.QColor("black"), 2)
  • self.setPen(pen)

impact the line:

  • path.addText(20, 25, QtGui.QFont('Times', 20), self.__partName)

Do you know how to add text independet? When I tried to add it I had the problem that the drawing and the text are not connected and only the symbol could be mouved with the mouse and not both (drawing and text) together.

0 投票
1 回答
350 浏览

python - QGraphicsPathItem的shape方法中的问题

在下图中,我QGraphicsPathItem在场景中作为红色部分并将其形状覆盖为蓝色部分。我想要当拖动和移动红色空间时,该项目被线性延长或缩短,当拖动蓝色空间​​时,必须移动整个项目。这是我尝试过的...

我得到的输出是受干扰的路径

0 投票
1 回答
95 浏览

python - 如何在 QGraphicsview 内继续绘制透明线而不重叠?

我试图以两种方式绘制一条由线组成的路径:第一种,路径由直线组成,它们的末端是共同的。使用这种方法的问题是线条在其末端重叠,从而导致不良影响,如下图所示:

在此处输入图像描述

这是代码:

我使用的第二种方法是创建一条由点组成的连续路径。此路径继承类:QGraphicsPathItem。但是,当我“更新”我的“场景矩形”时,当它的一端位于我的边界 =“场景矩形”之外时,这条路径就会消失。有什么办法可以防止它消失吗?我正在采取的这种方法的第二个问题是,我需要保存构成我的路径的这些点......对于少量点这不是问题,但随着我的路径充满点它会有内存管理问题。图片:

在此处输入图像描述

代码在这里:

我正在托盘模拟 GPS,我正在托盘绘制的路径是汽车的位移。但我不知道这两种方法中哪一种更好,以及是否还有另一种方法。

这是一个最小的可重现示例:

0 投票
1 回答
98 浏览

c++ - 两个可移动的 QGraphicsRectItem 之间的 QGraphicsPathItem

我正在尝试遵循此示例和 eyllanesc 的答案 拖动 QGraphicsItem以在两个 draggable/movable 之间绘制一条以箭头结尾的线时QGraphicsRectItem的奇怪行为

这是我的代码:

自定义QGraphicsPathItem类(继承自 QObject 也是因为我使用信号):

wireArrow.h

WireArrow.cpp

自定义qgraphicsitem 类(也继承自 QObject 以在位置更新时发出信号):

main

我可以创建矩形(组件)并很好地移动它们(感谢这里out的答案,我的问题是我可以从但是画线:

  1. 我无法正确地从一个组件绘制到另一个组件。
  2. 我需要让它们在拖动矩形时自动移动。在其他示例中,我看到他们将线条视为项目的属性,这是我不能在这里做的事情,因为电线是用于两个项目而不是一个,所以我用信号/插槽连接替换了它,但我仍然可以不知道如何更新位置...

一张图片解释了我正在尝试做的事情

在此处输入图像描述

(方块真的是用qt做的,但是线条是用油漆做的,方块是可移动的)。

简而言之:只是试图在两点(两个正方形的位置)之间画一条线,并且正方形是可移动的,因此如果移动了 2 个正方形之一,则该线应该适应。

0 投票
1 回答
66 浏览

qt - QGraphicsPathItem 橡皮擦 / 将 QGraphicsPathItem 分成两个新的

我正在使用 Qt5 开发一个应用程序,您可以在其中自由手绘矢量图形中的任意形状,移动它们并部分删除部分(就像 Microsoft 绘画中的橡皮擦一样)。

我通过添加QGraphicsPathItem在QGraphicsScene中绘制形状并使用QGraphicsItem::ItemIsMovable标志移动它们。橡皮擦的问题仍然存在。

有没有人面临部分删除QGraphicsPathItem的任务?特别是在我们用橡皮擦将图形分成两个(或更多)部分的情况下,这些应该成为单独的新QGraphicsPathItem?是否可以实施?

谢谢你的帮助!

0 投票
1 回答
32 浏览

python - PyQt5 QGraphicsPathItem 绘制一个电阻

我正在编写一个应用程序来解决电路问题,我需要对电路进行建模。为此,我需要在场景上绘制电阻器和其他形状,能够移动它等等。

问题是我试图在现场展示一个电阻器,但我找不到路。我正在尝试使用 QGraphicsPathItem 但查看文档我无法做到这一点。我将展示一些我正在编写的用于解决应用程序这一部分的代码:

1. 我展示的第一个代码是应该显示的电阻器

2.第二部分是我想要做的方式,但不是省略号,我想显示一个电阻