问题标签 [qgraphicsitem]

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 投票
2 回答
360 浏览

qt - 如何在 QGraphicsView 中拖动鼠标时量化多个 QGraphicsItem 的位置?

您好,感谢您的阅读。在 QGraphicsView 中拖动鼠标时,我无法正确量化多个 QGraphicsItems 的位置。如果一次只拖动一个,我设置的系统会正确量化 QGraphicsItem,但是如果我有多个选择并拖动它们,则只有主要项目(鼠标正下方的那个)被量化,其余的位置连续设置. 我将非常感谢任何帮助。相关代码如下:

这是在一个名为 MutaEvent 的类中,它继承自 QGraphicsRectItem。我重新定义了 mouseMoveEvent() 和 setPos() 函数:

下一位是名为 Muta 的命名空间中的静态函数:

任何帮助将非常感激!

0 投票
1 回答
798 浏览

c++ - 重叠 QGraphicsItem-s 悬停事件

我有更多的 QGraphicsItems 在彼此之上。如何使悬停事件可用于所有项目?只有最后添加的项目(顶部的项目)接受悬停事件。

谢谢

0 投票
1 回答
4824 浏览

qt - Qt:使用 QTransform 对象进行旋转不同于在 QGraphicsItem 中设置 setRotation()

在设置旋转时,我在使用和使用QGraphicsItem时在变换原点上得到不同的结果:setRotation()

在代码的两个部分中,我都设置setTransformOriginPoint()为同一点。

结果是:

  • 使用setRotation()方法时,项目在其变换原点上旋转。
  • 使用QTransform对象时,项目会在项目的原点(即点(0,0) )上旋转。

我的代码比这更复杂,但我认为它同样适用。这QGraphicsItem实际上是一个QGraphicsItemGroup,我可以检查只添加一个项目的问题,并在我的轮换过程中更改对象的setRotation()方法QTransform。后者,忽略setTransformOriginPoint().

我有这个问题有一段时间了,我挖掘了很多资源。我浏览Qt C++ 代码,我可以看到该方法setRotation()修改rotation了. 原点也是这种结构中的两个字段值,分别称为和。转换存储在字段中。所有这些信息都用于一个名为: 的变量中。TransformDataQGraphicsItemxOriginyOrigintranformtransformData

所以,我不明白为什么字段中的转换集在应用时transformData->transform忽略了这些值。transformData->xOrigintransformData->yOrigin

我用来测试该问题的代码是以下相关部分(我有一个旋转项目,它接收鼠标输入并将旋转应用于项目本身):

在这两者上,之前setTransformOriginPoint()都设置了,但它不是显示代码的相关部分,而只是为了知道它已经完成。

我对找不到解决方案感到沮丧。看起来很简单,为什么设置旋转变换矩阵不使用我设置的变换原点,而使用setRotation()方法工作正常?这个问题把我带到了源代码,但现在更令人困惑,因为旋转与应用的转换保持分离......

0 投票
1 回答
1763 浏览

qt - Qt中如何为QGraphicsItem做lower()和raise()?

我想在我的图形场景中更改图形项目的 z 顺序。我使用 QGraphicsWebView 作为图形项。我怎样才能实现它?

0 投票
1 回答
9908 浏览

qt - QGraphicsItem setPos 没有移动项目的位置

我所拥有的类似于以下内容:

我对 Qt 非常陌生,很可能误解了一个基本概念。谁能发现我在这里做错了什么?

0 投票
1 回答
200 浏览

qt4 - 使用 WSGI apache 模块执行 Qt4 应用程序时出错

我遇到了 WSGI 3.3 和 Qt4 应用程序的问题。似乎 QGraphicsScene 的项目无法调用 childItem() 方法。以下测试脚本在从命令行调用时运行良好,但在作为 WSGI 应用程序调用时永远不会完成。我注意到使用 WSGI v3.3 时会出现此问题,但较旧的 (2.8) 版本不会出现此问题。

childItems() 方法似乎挂起,应用程序变得无响应。

关于可能发生什么的任何线索?

环境(工作):python 2.6.4、apache 2.2.14、mod-wsgi 2.8、qt 4.6.2、python-qt 4.7.2

环境(问题):python 2.6.6、2.2.16、mod-wsgi 3.3、qt 4.6.3、python-qt 4.7.3

0 投票
1 回答
3369 浏览

qt - Qt/PyQt:QGraphicsItem vs. QGraphicsWidget 几何、位置、鼠标交互

我正在将一个更大的 QGraphicsItems 程序转换为 QGraphicsWidgets(为了打字,我们称它们为项目和小部件)。鼠标悬停现在失败,因为小部件的位置和/或矩形与旧项目不同。我已经归结为一个包含视图、场景、项目和小部件的简单案例。蓝色项目以 100x50 像素呈现,并且 hoverEnterEvent 按预期发生。但是,红色小部件以预期宽度的一半呈现。如果我为小部件重新实现纯虚函数 boundingRect,我可以解决此问题,悬停事件仍然仅在 50x50 左半部分触发。我需要使用/覆盖哪些 pos/rect/geometry 方法来让小部件像项目一样与鼠标正确交互?谢谢。这是我的示例代码

0 投票
2 回答
2823 浏览

qt - 同时触发多个QGraphicsItem的mouseMoveEvent

当我选择几个 QGraphicsItem(使用 Ctrl 键)时,我可以将它们一起移动,但 mouseMoveEvent 仅针对实际接收事件的项目触发。有没有办法让每个选定的项目都收到事件?我在 Qt 的文档中找不到它。

我可以将选定的项目组合在一起并在 QGraphicsView 的 mouseMoveEvent 中处理它吗?

非常感谢您的帮助:)

0 投票
1 回答
216 浏览

qt - QGrahicsItem 和他们的孩子

我现在已经尝试了几个小时来理解 QGraphicsItem 对儿童的行为方式。我创建了一个新的 QGraphicsItem B(实际上是它自己的子类),然后通过调用 B 上的 setParentItem 方法将它作为子类添加到另一个 QGraphicsItem A。紧接着 A 将 B 作为子类。我已经用一些迭代 A 的子级的调试代码进行了验证。然后将 A 添加到管理器中的 As 列表中。稍后在程序中,在 QWidget 中,列表迭代器是从管理器获得的。然后我遍历 As 的列表并检查每个孩子的孩子,他们都走了。我已经在调试器中验证了 Manager 确实是同一个实例,并且列表也是同一个实例。不知何故,这真的让我感到困惑,谁在 Qt FWK 中为我决定我的 A 对象不再需要它们的孩子?

我是 Qt 和 C++ 的新手,也拥有从 java 到 Objective-c 的丰富开发经验,所以我希望这是我不知道的 Qt 的专长,不完全是我自己的愚蠢......

此致,

安德烈

0 投票
1 回答
422 浏览

qt4 - 动画完成后如何更改 QGraphicsPixmapItem 的可见性?

我正在使用 QPropertyAnimation 为 QGraphicsPixmapItem 子类的位置和不透明度设置动画。在像素图变得完全透明后,我想使用 setVisible(false); 隐藏它。或隐藏();阻止其鼠标事件。我尝试使用 QPropertyAnimation,但看起来该动画不会更改布尔属性。实现这一目标的另一种方法是什么?