问题标签 [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.
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?
graphics - 关于Qt Graphics View Framework在项目繁多时的效率问题
最近,我使用 QT Graphohics View Framework 开发了一个新的可视化软件。在软件中,我们需要显示很多项目,包括点和线,大约一万以上。但是,在显示的过程中,有池效率,往往没有反应。当我们想对其进行缩放或移除场景的位置时,我们必须等待一个跨度,并且难以承受。所以,我想知道这是否正常以及如何提高效率。谢谢 。
c++ - 在 GraphicsPolygon 中绘制 GraphicsItem
我创建了一个名为 Node 的类,它继承自 GraphicsItem。我还创建了另一个名为 BLock 的类,它继承自 QGraphicsPolygon。
如何在每个 Block 内的不同位置绘制节点?
块.cpp
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()
inmousePressEvent
will make my object unmovable. I want to move it. - Calling
accept()
inmousePressEvent
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?
c++ - 使用 qt 中的事件将项目属性传递到主窗口
我有一个 qmainwindow,它在 qgraphicsview 中容纳了几个 qgraphicsitems(从 qgraphicsitems 继承的类)。这些项目包含他们的个人项目,这些项目也继承自 qgraphicsitems。这些项目监听鼠标按下事件。这些项目还具有自己的其他数据属性,例如自定义 ID。
我可以将鼠标事件从这些项目传递到主窗口。我还需要将上述点击项目的自定义 id 与事件一起传递给主窗口,以便主窗口可以更改其外观以适应点击项目。
我该怎么做?
qt - 用 Qt 画一棵树
我需要用Qt画一棵树,
我在考虑使用QGraphicsScene
和QGraphicsItem
节点。但是由于我希望节点是可移动的,那么如何最好地处理节点之间的线呢?
有什么建议么 ?
谢谢。
qt - QGraphicsItem - 跟随鼠标光标
我被困在如何解决这个问题上。我在场景中有一个 QGraphicsItem,我正在将一个悬停事件从场景传递给这个孩子。当移动事件发生时(我只是使用 mouseMoveEvent 并启用鼠标跟踪),我希望另一个 QGraphicsItem 跟随光标。
我不需要任何碰撞检测、拖放等。只是一个跟随光标的项目。我能想到的唯一两种方法是......
- 在鼠标移动的同时,在鼠标位置绘制一个新的 QGraphicsItem。我需要清除场景,重新绘制所有内容,然后在顶部绘制新位置。
- 不知何故使用动画框架,每当鼠标移动时,动画 QGraphicsItem 以在 1 毫秒内移动到新的鼠标位置。
我可能要么想多了,要么不知道另一种方法来做到这一点......有什么建议吗?
qt - QGraphicsItem::prepareGeometryChange() 是如何工作的?
根据 Qt 文档,它“为几何更改准备项目。在更改项目的边界矩形之前调用此函数以使 QGraphicsScene 的索引保持最新。如果有必要,prepareGeometryChange() 将调用 update()。”
我不明白的是 QGraphicsItem 如何知道边界矩形何时更改,以及它如何知道何时调用 update()。您是否应该在调用 prepareGeometryChange() 然后更改边界矩形后自己调用 update() ?
我非常感谢对似乎是千里眼的方法的一些见解。
c++ - 查找 QGraphicsItem 的屏幕位置
用例:这应该是一个相当普遍的问题。在带有 QMdiArea 的普通 QMainWindow 中,有一个带有 QGraphicsView 的 mdiChild。这个视图显示了一个 QGraphicsScene,里面有 QGraphicsItems。右键单击这些项目之一选择(聚焦)该项目并打开上下文菜单,该菜单方便地放置在屏幕坐标处QGraphicsSceneMouseEvent::screenPos()
。这按预期工作。
现在我想在用户按下一个键时显示相同的上下文菜单(例如 Qt::Key_Menu)。我知道所选(聚焦)项目,我知道显示场景的视图。
所以我的问题是:
在场景中获取 QGraphicsItem 的可见表示的位置(在全局,屏幕坐标中)的正确方法是什么?
这是不起作用的:
文档说:
如果你想知道一个项目在视口中的位置,你可以在项目上调用 QGraphicsItem::mapToScene() ,然后在视图上调用 QGraphicsView::mapFromScene() 。
这正是我正在做的,对吧?
刚刚偶然发现德国论坛上的一个帖子暗示:
甚至更好:
使用它可能会更普遍地回答我的问题......
qt - 关闭从 mouseReleaseEvent RightClick 启动的 QDialog 会导致出现空白上下文菜单
这发生在我弹出的每个从 QGraphicsItem 上的 mouseReleaseEvent 或从 QContextMenu 触发的 QDialog 上。我不明白问题是什么 - 代码很简单..
只要通过 OK 或 Cancel 关闭对话框,就会在触发事件的位置出现一个空的上下文菜单:
空白项似乎可以控制我的 QDockWidget 是隐藏还是可见。知道发生了什么吗?许多谷歌搜索让我陷入困境。
编辑 - 看起来只有在使用鼠标右键时才会发生这种情况..