问题标签 [qgraphicsview]

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

c++ - QGraphicsItem 不接收鼠标悬停事件

我有一个派生自 的类QGraphicsView,其中包含 -QGraphicsItem派生元素。我希望这些元素在鼠标光标悬停在它们上方时改变颜色,所以我实现了hoverEnterEvent(和hoverLeaveEvent):

但是,此事件处理程序代码永远不会执行。我已明确启用鼠标跟踪:

尽管如此,还是没有运气。我究竟做错了什么?

0 投票
2 回答
12734 浏览

qt - 在 QGraphicsView 上绘制小部件(例如按钮)

如何在 QGraphicsView 上绘制交互式小部件,例如 QButtons 和 Line Edits?例如,我在图像编辑应用程序中选择了一个图像区域,该应用程序使用 QGraphicsView 显示图像,我想用名称注释这个区域。

所以我想在这个矩形选择下面有一个 Line 编辑和两个按钮(Cross 和 Tick)。我怎么画这些?

示例代码会很酷!

0 投票
1 回答
721 浏览

c++ - QGraphicsView 框架和性能中的大量指针转换

由于 QGraphicsScene 和 QGraphicsItem 的大多数便利功能(例如 items()、collidingItems()、childItems() 等)返回一个 QList,你不得不做很多 qgraphicsitem_cast 或 static_cast 和 QGraphicsItem::Type() 检查当场景中有很多不同类型的物品时,请掌握实际物品。我认为做很多子类转换不是一种理想的编码风格,但我想在这种情况下没有其他可行的方法,或者有吗?

上面的 qgraphicsitem_cast 可以用 static_cast 代替,因为正确的类型已经被验证。当一直在做很多这些(非常动态的场景)时,大量的演员会影响性能超出正常的 if-else 评估吗?

0 投票
2 回答
586 浏览

c++ - 对话框关闭后嵌入式 QGraphicsView 不隐藏

我在模式、showNormal 和 showFullscreen 中调用 QDialog。在正常模式下一切正常。使用 Keyevent 对话框按预期关闭。在全屏中,在一个关键事件后对话框关闭,但 QGraphicsView 将保持在顶部。我尝试过的所有事情(比如关闭/更新视图)都失败了。顶部的视图站。

也许我的结构将有助于解决问题:

这调用了名为 GraphicsWidgetDialog 的 QDialog。

这是 GraphicsWidgetDialog 的定义

GraphicsWidget 是包含 QGraphcisView 和 Scene 的 Widget

在 keyPessEvent 上,它将发出 closeEvent()。

任何想法?

0 投票
3 回答
4323 浏览

c++ - 带有 QGraphicsItemGroup 的事件

在我的应用程序中,我想使用 QGraphicsItemGroup 将项目分组为一个项目。
我玩了一点,不确定使用它,因为当我想捕捉事件时,事件被合并在一起,但我想用特定的孩子处理特定的事件。
我怎样才能做到这一点?

0 投票
1 回答
1630 浏览

qt - 如何让 Qt Graphics View Framework 支持自定义图层

Qt 的图形视图框架非常强大,但是我还没有找到支持自定义图层的方法。在Qt中,有一个QGraphicsScene::ItemLayer,但是QGraphicsScene渲染的所有项目都在这个层。我想管理具有多个图层的项目,就像 Illustrator 和 CorelDraw 一样。仅当前层中的所有项目将接收事件,被选中或获得关键焦点等。其他层(不是当前层)将不会接收所有场景事件。使用图层的主要原因是我可以更清楚地对大量项目进行分类。并且不需要将事件传递给所有图层的项目,我认为图形框架会更高效。最后一个问题,QGraphicsView是否支持同时渲染服务器堆叠图形场景?如果支持,我认为“自定义图层”可以通过这种方式解决。

0 投票
1 回答
1453 浏览

qt - 将视频与 QGraphicsScene 一起使用的最佳方式

我目前正在使用 QGraphicsProxyWidget 在 QGraphicsScene 中使用 Phonon VideoWidgets。

我将视口设置为 QGLWidget。

但是,当我尝试对视频应用一些变换(例如不能被 90 度整除的旋转)时,它会给我带来很大的问题,因为它会大大降低我的程序速度。

在阅读了我设法找到的关于该主题的几件事后,我发现似乎在 QGraphicsProxyWidget 中使用 VideoWidget 时,它会进行软件转换,这可以解释大幅减速。

所以我想知道是否有更好的方法来渲染视频。

0 投票
1 回答
1704 浏览

c++ - QGraphicsView/QGraphicsScene 渲染问题

我在我的应用程序中使用 QGraphicsScene/QGraphicsView 对。为了我的目的,我对它们进行了子类化。生成该对的代码片段如下:

将一些小部件添加到 QGraphicsScene 后,我的应用程序最终 UI 快照如下: 应用程序界面快照 我的问题是为什么图片上方有一些空闲空间?什么可能导致这种情况?我正在为我的小部件使用一些负坐标。跟那个有关系吗?

0 投票
1 回答
6123 浏览

qt - 如何将 Qt 模型/视图框架与图形视图框架一起使用

我正在开发一个地图应用程序,需要使用表格、表单和地图中的图形对象来显示数据对象。我正在使用 PyQt,但这并不重要,因为这是一个 Qt 问题而不是 Python 问题。

如果我只需要表格和表单视图,这很容易,我只需使用 Qt 模型/视图框架。但是,我需要地图视图提供仅使用 Graphics View 框架才真正可用的功能,该框架本质上是它自己的模型/视图框架,QGraphicsScene 充当数据模型。

我可以想到两种方法来做到这一点。一种方法是从 QAbstractItemModel 子类的权威模型开始,将其链接到 QAbstractItemView 的子类,然后从那里生成和更新场景中的 QGraphicsItems。这看起来很难看,因为我不确定如何通过与 QGraphicsItems 的交互来处理用户与数据项的交互和对数据项的更改。

我能想到的另一种方法是将 QGraphicsScene 视为权威数据源,将数据对象存储在每个 QGraphicsItem 的 .data() 属性中。然后我将 QAbstractItemModel 子类化并编写它,以便它访问场景中的数据,因为它是数据存储,然后其他视图将使用它作为他们的模型。我如何将场景中数据的更改传播到模型?

无论我采用哪种方法,框架似乎都没有处理差距。在模型/视图中,假设所有更改都在模型中进行。在图形视图中,假定所有更改都在场景中进行。

那么您会选择哪种方法 QAbstractItemModel(authoritative)->QAbstractItemView->QGraphicsScene 或 QGraphicsScene(authoritative)->QAbstractItemModel->Other Views。你为什么会选择其中一个,你预计会有什么问题?还有其他人需要弥合 Qt 的双模型/视图框架之间的差距吗?你是怎么做到的?

0 投票
4 回答
69982 浏览

c++ - Qt 中的 GIF 动画

我使用QGraphicsView,QGraphicsScene类来在这样的小部件中显示图片:

如何在同一场景中显示.gif动画?