问题标签 [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 投票
1 回答
292 浏览

qt - 在 QGraphicsScene 中定位 QGraphicsPolygonItem 的副本的问题

我有一个应用程序,其中 QGraphicsPolygonItem (objectA) 具有以下特征:

场景位置:X=250 Y=125

转换():

现在,我正在创建和新建 QGraphicsPolygonItem (objectB) 并将其 scenepos 和 Transform 设置为与对象 A 相同:

问题是 objectB 在 X 轴上从 ObjectA 移动了 50 个单位。

知道为什么吗?

0 投票
2 回答
2475 浏览

qt - 检测鼠标何时按下按钮进入 QGraphicsItem

我想检测鼠标光标何时在QGraphicsItem按下鼠标按钮时移入,即在鼠标进入项目之前按下按钮。我的第一个想法是使用hoverEnterEvent,但按下鼠标左键时似乎不会触发。我的另一个想法是使用dragEnterEvent,但它似乎根本没有触发(即使我使用过setAcceptDrops(True).

检测光标何时移动到项目顶部并按下鼠标按钮的最佳方法是什么?

0 投票
1 回答
911 浏览

c++ - 如何在不丢失鼠标抓取的情况下将 QGraphicsItem 移动到另一个场景?

我有一个QGraphicsScene作为主场景,其中有几个可移动QGraphicsItem的 s,另一个QGraphicsScene在主场景的顶部作为叠加层。覆盖场景与用户显示的大小完全相同,而主场景要大得多,因此需要自动上下滚动。

如果要移动主场景中的某个项目,我想从主场景中删除该项目并将其添加到覆盖场景中,让用户在覆盖场景中移动该项目,并且只要释放鼠标把它放回主场景。这使我可以在项目接近显示边缘时平滑地自动滚动主场景。

问题如下;当一个项目从其场景中移除时,它会收到一个QMouseUngrab事件,因此如果不在覆盖场景中再次单击它,就无法继续移动该项目。我试图阻止 unrab 事件或QMousePress在覆盖场景中生成假事件,但是它们都没有解决问题。

你知道我如何开始在一个场景中移动一个项目并继续在另一个场景中移动它而不会有任何中断吗?

换句话说:

  1. QMousePress发生在主场景
  2. 在叠加场景中应该发生几个QMouseMoves 和最后一个QMouseRelease
  3. 项目之后QMouseRelease将立即放回主场景
0 投票
3 回答
10537 浏览

c++ - Qt GraphicsView 拉伸场景以适应

好的,所以我使用 Qt 和 C++ 作为我的环境。

QGraphicsView我在我的 UI 中画了一个。

然后我创建一个场景并向该场景添加线条。我遍历一个 5000 个点的数组并绘制连接每个点的线。

问题是我抓取的数字非常小,例如 2.000e-12。这些数字将根据应用程序不断变化。如何调整我的场景以拉伸以填充我的QGraphicsView. 现在,我看到的只是我视野中心的一个点。我说得有道理吗?

0 投票
2 回答
5716 浏览

c++ - 如何使用 QGraphicsView 的 QGraphicsItem 类绘制三角形

我想QGraphicsView使用QGraphicsItem. 但我不知道如何根据三角形来实现边界矩形。

0 投票
1 回答
2174 浏览

qt - 如何在不选择整个组的情况下选择 QGraphicsItem(该项目所属)

我想知道是否可以选择属于一个组的项目,而不选择整个组。

我想做的是一组可以移动的项目(所有项目都一起移动),但没有一个不能单独移动。但我也希望能够选择该组内的项目,然后对它们做一些事情,比如重新排序、删除、更改它们的颜色等。

另一个问题是,可以有一组组。我还希望能够在父组中选择这些组。我在想这可能是个问题,因为我们无法确定用户想要选择哪个组。出于演示目的,假设我们有由以下项目组成的图形场景:

组 A 包含组 B。组 B 包含 3 行。如果我在 A 组上双击,那么我就可以选择 B 组。如果我再次在 B 上双击,那么我可以选择 B 组内的行。按 Esc 与双击相反。问题是,我不知道该怎么做,因为所有选择都路由给父母,而不是回到它的所有孩子。

0 投票
2 回答
1796 浏览

c++ - 在 QT 中一键按下多个 QGraphicsItem

我在 QGraphicsScene 中有一个 QGraphicsItem 矩阵,当我单击一个元素时,它会改变它的颜色。这是用mousePressEvent(). 我希望能够单击并按住然后将光标移到其他 QGraphicsItem 上并更改它们的颜色,从而触发它们的mousePressEvent().

问题是由于鼠标抓住了第一个元素,我单击“保留”了所有事件并且hoverEnterEvent()没有被触发。我尝试添加ungrabMouse()mousePressEvent()但没有帮助。

我想一种解决方案是使 QGraphicsitem 可以拖动并为此使用 QT 拖放功能。事实上我有这个:

当我从应用程序中将一些文本拖到元素上时,它就像我想要的那样工作,但当我“拖动”一个 QGrahphicsItem 时却不是。

那么,使 QGraphicsItem 可拖动以便能够在单击鼠标按钮悬停在事件上时触发事件的唯一解决方案是什么?

0 投票
2 回答
1955 浏览

qt - QGraphicsRectItem::boundingRect() 返回一个比它应该大 1px 的 QRectF

假设我有一个带有 item.width=10 和 item.height=10的 QGrahicsRectItem项。它的左上角在 (0,0)。item.BoundingRect()应该返回 aRectF(0,0,9,9)但它返回 aRectF(0,0,10,10)

您可以使用以下代码对其进行测试:

因此 boundingRect() 返回一个宽度和高度为 11px 的 RectF,尽管 width() 和 height() 声称两者都是 10。

怎么了?

0 投票
1 回答
1045 浏览

qt4 - 裁剪子 QGraphicsItems

我有一个QGraphicsItem包含其他几个QGraphicsItems.

在移动它们时,如何确保这些子项被绘制并裁剪到父项的矩形?

0 投票
2 回答
2238 浏览

c++ - Qt - 如何将坐标映射到场景中的图像像素

我在 Qt 中创建了一个场景,我从开放的街道地图 [.png] 中获取了一张图像并将其放入场景中。我还在另一个文件中导出了它的坐标。我的问题是如何将我的图像像素映射到地图坐标。基本上我想将地图中的道路绘制到我的图像中。谢谢