问题标签 [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 回答
704 浏览

qt - QRubberBand Selection - Stopping dotted line around selected items

I am selecting items using the default QRubberBand enabled by setting QGraphicsView.setDragMode() to rubber band selection. This works fine, however when an item is selected it appears with a grey dotted line around it's bounding rect and I was wondering if there is any way to prevent this?

0 投票
2 回答
419 浏览

graphics - 关于Qt Graphics View Framework在项目繁多时的效率问题

最近,我使用 QT Graphohics View Framework 开发了一个新的可视化软件。在软件中,我们需要显示很多项目,包括点和线,大约一万以上。但是,在显示的过程中,有池效率,往往没有反应。当我们想对其进行缩放或移除场景的位置时,我们必须等待一个跨度,并且难以承受。所以,我想知道这是否正常以及如何提高效率。谢谢 。

0 投票
1 回答
240 浏览

c++ - 在 GraphicsPolygon 中绘制 GraphicsItem

我创建了一个名为 Node 的类,它继承自 GraphicsItem。我还创建了另一个名为 BLock 的类,它继承自 QGraphicsPolygon。

如何在每个 Block 内的不同位置绘制节点?

块.cpp

0 投票
3 回答
3357 浏览

qt - How do I propagate a mousePressEvent() to a group of QGraphicsItems?

I'm writing a program that uses the Qt Graphics View framework. I have subclassed QGraphicsItem to a class that includes other QGraphicsItem (or other subclasses of it). This class is the parent of the included QGraphicsItem; the idea is to work with composite objects.

From the docs it seems to be a conflict in what I try to achieve:

  • Calling ignore() in mousePressEvent will make my object unmovable. I want to move it.
  • Calling accept() in mousePressEvent will prevent the event from being propagated to the child object. Some of the child objects should react to mouse events.

How can I make this work?

0 投票
1 回答
377 浏览

c++ - 使用 qt 中的事件将项目属性传递到主窗口

我有一个 qmainwindow,它在 qgraphicsview 中容纳了几个 qgraphicsitems(从 qgraphicsitems 继承的类)。这些项目包含他们的个人项目,这些项目也继承自 qgraphicsitems。这些项目监听鼠标按下事件。这些项目还具有自己的其他数据属性,例如自定义 ID。

我可以将鼠标事件从这些项目传递到主窗口。我还需要将上述点击项目的自定义 id 与事件一起传递给主窗口,以便主窗口可以更改其外观以适应点击项目。

我该怎么做?

0 投票
2 回答
1329 浏览

qt - 用 Qt 画一棵树

我需要用Qt画一棵树,

我在考虑使用QGraphicsSceneQGraphicsItem节点。但是由于我希望节点是可移动的,那么如何最好地处理节点之间的线呢?

有什么建议么 ?

谢谢。

0 投票
1 回答
3039 浏览

qt - QGraphicsItem - 跟随鼠标光标

我被困在如何解决这个问题上。我在场景中有一个 QGraphicsItem,我正在将一个悬停事件从场景传递给这个孩子。当移动事件发生时(我只是使用 mouseMoveEvent 并启用鼠标跟踪),我希望另一个 QGraphicsItem 跟随光标。

我不需要任何碰撞检测、拖放等。只是一个跟随光标的项目。我能想到的唯一两种方法是......

  1. 在鼠标移动的同时,在鼠标位置绘制一个新的 QGraphicsItem。我需要清除场景,重新绘制所有内容,然后在顶部绘制新位置。
  2. 不知何故使用动画框架,每当鼠标移动时,动画 QGraphicsItem 以在 1 毫秒内移动到新的鼠标位置。

我可能要么想多了,要么不知道另一种方法来做到这一点......有什么建议吗?

0 投票
1 回答
7154 浏览

qt - QGraphicsItem::prepareGeometryChange() 是如何工作的?

根据 Qt 文档,它“为几何更改准备项目。在更改项目的边界矩形之前调用此函数以使 QGraphicsScene 的索引保持最新。如果有必要,prepareGeometryChange() 将调用 update()。”

我不明白的是 QGraphicsItem 如何知道边界矩形何时更改,以及它如何知道何时调用 update()。您是否应该在调用 prepareGeometryChange() 然后更改边界矩形后自己调用 update() ?

我非常感谢对似乎是千里眼的方法的一些见解。

0 投票
3 回答
15303 浏览

c++ - 查找 QGraphicsItem 的屏幕位置

用例:这应该是一个相当普遍的问题。在带有 QMdiArea 的普通 QMainWindow 中,有一个带有 QGraphicsView 的 mdiChild。这个视图显示了一个 QGraphicsScene,里面有 QGraphicsItems。右键单击这些项目之一选择(聚焦)该项目并打开上下文菜单,该菜单方便地放置在屏幕坐标处QGraphicsSceneMouseEvent::screenPos()。这按预期工作。

现在我想在用户按下一个键时显示相同的上下文菜单(例如 Qt::Key_Menu)。我知道所选(聚焦)项目,我知道显示场景的视图。

所以我的问题是:
在场景中获取 QGraphicsItem 的可见表示的位置(在全局,屏幕坐标中)的正确方法是什么?

这是不起作用的:

文档说: 如果你想知道一个项目在视口中的位置,你可以在项目上调用 QGraphicsItem::mapToScene() ,然后在视图上调用 QGraphicsView::mapFromScene() 。
这正是我正在做的,对吧?


刚刚偶然发现德国论坛上的一个帖子暗示:

甚至更好:

使用它可能会更普遍地回答我的问题......

0 投票
2 回答
569 浏览

qt - 关闭从 mouseReleaseEvent RightClick 启动的 QDialog 会导致出现空白上下文菜单

这发生在我弹出的每个从 QGraphicsItem 上的 mouseReleaseEvent 或从 QContextMenu 触发的 QDialog 上。我不明白问题是什么 - 代码很简单..

只要通过 OK 或 Cancel 关闭对话框,就会在触发事件的位置出现一个空的上下文菜单:

在此处输入图像描述

空白项似乎可以控制我的 QDockWidget 是隐藏还是可见。知道发生了什么吗?许多谷歌搜索让我陷入困境。

编辑 - 看起来只有在使用鼠标右键时才会发生这种情况..