问题标签 [qgraphicsrectitem]

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 回答
84 浏览

python - 调整 QGraphicsRectItem 的大小和重新绘制的 PyQt 问题

我正在尝试创建一个可调整大小的 QGraphicsRectItem ,并可以选择不同的绘制样式。

如果我创建一个仅具有调整大小功能的简单矩形,那么它会按预期工作:


当我尝试修改它以更改笔样式和颜色(如果处于活动状态)时,它变得无法选择且无法聚焦。不仅如此,边界矩形出乎意料地消失了。这是一个修改后的版本:

我想主要问题在于重新实现的paint()函数,但我仍然没有想出确切 的位置......

谁能解释我做错了什么?哪里出了错,如何让这个东西正常工作?

0 投票
2 回答
434 浏览

c++ - 如何修复:自定义 QGraphicsItem 接收 mousePressEvent 坐标延迟/滞后?

我有一个“标准”Qt5 QWidgets 应用程序,它的 MainWindow 包含在 QtCreator 中创建的 mainwindow.ui 中的 QGraphicsView。QGraphicsView 将其场景设置为 QGraphicsScene 的一个简单子类,它在背景中有一个大矩形,它是 QGraphicsRectItem 的子类,它重新实现了 QGraphicsRectItem 的 mousePressEvent() 和 mouseReleaseEvent() 处理程序。在 Ubuntu 18.04 上运行,这无关紧要,但只是以防万一......

一切正常,除了...第二次和以后我按下鼠标左键(或任何)时,mousePressEvent 的 QGraphicsSceneMouseEvent buttonDownScenePos 中报告的坐标是“陈旧的” - 与上一次鼠标单击相同,而不是新位置鼠标是新点击发生的时间。mouseReleaseEvent 按预期报告坐标。

有没有办法让 mousePressEvent 的 buttonDownScenePos 在单击时保持当前鼠标的实际位置,而不是之前的鼠标位置?

我觉得我过去处理过一个与双击处理有关的类似问题,即在知道是否发生双击之前报告事件。在这种情况下,双击事件并不重要,但是能够在单击发生时立即响应它会很好,而不是等待释放事件。

相关代码:

主窗口.h

主窗口.cpp

boardscene.h

boardscene.cpp

boardrect.h

boardrect.cpp

在运行后第一次单击时,报告的坐标与单击鼠标的网格位置非常吻合,无论是按下还是释放 - 它们都显示了按钮按下的位置。

但是,在第 2 次及以后的单击中,mousePressEvent 报告与之前的 mousePress 和 Release 事件相同的坐标,而 mouseReleaseEvent 报告当前事件中鼠标按钮“向下”的坐标。

最后一点奇怪:当单击左,右,再左时,mousePressEvent 报告的第二次左单击的坐标是之前的左单击坐标,跳过右键单击坐标回到鼠标按钮按下的位置在最后一次左键单击。

有任何想法吗?谢谢。

0 投票
1 回答
51 浏览

qt - 从中心调整旋转的 GraphicsItem

https://forum.qt.io/topic/67664/solved-resizable-rotatable-graphicsitem

您好,上面的帖子使用选定的句柄调整大小并更改 boundingRect 的中心。我需要通过 keyPressEvent 做同样的事情,它会从中心统一调整旋转的 boundingRect 的大小,即,它会在左右两侧增加 1 个单位的宽度,同样在两侧减少 1 个单位,同样增加/减少高度。现在 keyPress 的问题是我们不会得到

所以我们知道在哪里设置boundingRect的边缘,但是当我们在不改变中心的情况下均匀地增加/减少两侧的宽度/高度时,我们没有这个。

我们如何找到boundingRect的新scenecoords,已知的旧sceneCoords,boundingRect的角度,宽度和高度,中心应该保持不变?

0 投票
1 回答
88 浏览

python - 如何在一个类中继承 QGraphicsRectItem 和 QGraphicsEllipseItem?

我正在使用 Pyside2,并且有一个使用 QGraphicsView 和 QGraphicsScene 的 UI。

现在我有两个独立的类,它们是 QGraphicsEllipseItem 和 QGraphicsRectItem 的子类,如下所示:

而不是在两个类中都有冗余方法,我想要一个可以是矩形或椭圆的类,例如:

0 投票
1 回答
162 浏览

c++ - 如何从 QVector 中删除 QGraphicsRectItem?

我有一个填充有 QGraphicsRectItem 元素(小矩形)的 QVector,当用户单击它时,我需要删除一个矩形。我尝试使用removeItem(vec.begin() + i)anddelete vec.begin() + i函数,removeItem(vec[i])and delete vec[i], vec.erase(vec.begin() + 1). 但在第一种情况下,程序会输出一条消息:

在第二种情况下,当我单击一个矩形时,它会删除所有矩形。

在第三种情况下,它根本不起作用。

你能告诉我一些其他的方法来解决我的问题吗?

这是代码:

0 投票
1 回答
57 浏览

python - 使用鼠标拖动时,旋转的 QGraphicsRectItem 随机移动

我有一个可移动的 QGraphicsRectItem 旋转到 90 度并设置为场景。当我拖动该项目时,它会随机移动并最终消失。

但是,当我将旋转设置为 0 时,该项目完美地移动。

这是我最小的可重现示例。

(我在主窗口底部添加了一个滑块以方便地旋转项目)

为什么会这样?

0 投票
0 回答
19 浏览

python - QGraphicsRectItem的setTransformOriginPoint如何进行旋转和偏移

我没有找到答案,所以我想问一下如何设置旋转原点。例如,我将旋转的原点设置为 [200,200],并且我想在偏移发生之前和之后保留旋转的原点。我试过setTransformOriginPoint但它不起作用,它仍然需要 [0,0] 作为旋转的原点。谢谢。

例子:

0 投票
0 回答
9 浏览

python - PyQt:QGraphicsRectItem位置设置问题

我在调整 的位置时遇到问题QGraphicsRectItem。当我通过设置某个位置mouseReleaseEvent时,当我退出应用程序并重新启动时,它显示它是相同的位置,但元素已在QGraphicsView.

这是类的样子:

0 投票
0 回答
24 浏览

pyqt5 - PyQt:如何阻止 QGraphicsRectItem 元素的重叠?

谁能帮助我如何防止QGraphicsRectItem元素重叠?

所以我想做当我们移动一个元素并将它放在某个地方以将其返回到我们开始移动的起始位置时,如果已经有一个元素在设置位置。

我想阻止这种重叠。

我想阻止这种重叠。

这就是我的QGraphicsRectItem班级的样子。

0 投票
1 回答
35 浏览

pyqt - PyQT:如何检测我是否在 QGraphicsScene 中的元素之外单击?

我需要帮助,我想添加另一个QMenu,但只有在我在QGraphicsRectItem.

这就是我对元素创建类的看法。

我的 QGraphicsViewClass: