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

qt - 从 QGraphicsLinearLayout 计算场景坐标

在我的应用程序中,我使用了从 QGraphicsWidget 派生的自定义对象,并将它们放在 QGraphicsLinearLayout 中。但现在我需要找到每个项目的场景坐标。可能吗?如何?

0 投票
1 回答
2042 浏览

python - 如何在具有许多项目的 2D 静态场景中提高 QGraphicsView 性能?(没有办法解决?)

如果理解正确,QGraphicsView 应该可以有效地处理百万个项目。

在我的应用程序中,我只有几千个,性能已经很差了。当 View 显示整个场景时,缩放、hoverEnvents 和任何其他东西都变得不可能。

我试图在项目和不同的优化标志之间创建父子关系,但结果仍然相同。我真的希望我犯了一些愚蠢的错误,但是在寻找解决问题的方法几天后,我没有找到任何解决方案。

我真的很感激任何帮助!

这重现了我的问题:

  • Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
  • nVidia Corporation G84 [Quadro FX 1700]
  • Ubuntu 9.04 64 位
  • qt4 4.5.3
  • python-qt4 4.6
0 投票
1 回答
2118 浏览

qt - 子 QGraphicsItem 移动事件 (ItemIsMovable) 到其父

子 QGraphicsItem 如何移动其父项?

我设置了子项的 ItemIsMovable 标志,当我尝试移动子项时,父项不移动,只有子项移动。

p>

这可行,但如果我选择多个项目,它只会移动鼠标下的项目。

我该如何解决这个问题?

0 投票
1 回答
950 浏览

c++ - 我如何知道正在调用 QGraphicsItem::paint() 进行打印?

我有一个自定义QGraphicsItem显示大型(100 MB 压缩,多通道)图像。它现在工作得很好。

这个想法只是加载当前视图比例和图形视图端口所需的扫描线。并将显示划分为内置在单独线程中的图块。该paint()函数仅构造图块并将它们提供给 QThreadPool。它还检查并绘制任何已完成的图块。有更多代码处理线程/可运行对象和项目之间的事件。但这是基本的部分。

目标是提供响应式 UI。当项目自行更新时,UI 不会被阻止。这一切都很好,直到我试图弄清楚如何打印它。

问题是我需要知道对我的绘画函数的特定调用是由打印而不是屏幕更新引起的。这需要阻塞主线程,直到我所有的图块都完成并绘制给画家(或者打印页面将是空白的,因为 paint() 立即返回)

它还有助于调整采样率,因为打印机的分辨率高于屏幕。

所以我的问题归结为:我怎样才能知道QPainter传递给我paint()的是屏幕还是打印机。更好的是,我可以判断调用是用于打印预览还是实际打印?

谢谢。

0 投票
1 回答
4478 浏览

python - 在 PyQt4 中围绕中心点移动 QGraphicsItem

我正在使用 Python 2.7 和 PyQt4。我试图有一个半圆对象,它是一个 QGraphicsItem。我希望能够使用鼠标通过单击和拖动来移动它。我可以通过设置标志 ItemIsMovable 创建对象并用鼠标移动它。现在半圆自由移动,但我希望它围绕固定的中心点移动。很难描述,但应该是类似于表盘的东西。我怎样才能做到这一点?

0 投票
1 回答
1631 浏览

c++ - 使用 Qt 在 C++ 中将事件从 QGraphicsScene 传递到 QGraphicsItem

我有一个扩展 QGraphicsScene 的基类...

在那个类中是受保护的事件......

有一些用户点击我需要将事件传递给 QGraphicsItem 内的QGraphicsScene,因为QGraphicsItem它还包含一个' mousePressEvent'。

我怎样才能将我选择的事件从QGprahicsScene特定的QGraphicsItem?.

谢谢你。

0 投票
2 回答
1709 浏览

c++ - 如何在 QImage 中显示此数据缓冲区

我有一张我想在 QImage 中显示的图像。

这是填充 rows*cols 图像的代码片段:

如您所见,我的数据缓冲区是“行高”并且是“列*3 宽”

rgbMapped 是一个 unsigned char** 数组。所以回到我的 QT 代码中,我有以下内容:

ImagePixMapItem 是我创建的一个 QGraphicsPixmapItem,它允许我拦截一些鼠标事件,但我不会对任何绘图函数或任何东西做任何事情。

当我运行这段代码时,我返回的图像看起来像我的图像,除了有三个副本,一个是绿色的,一个看起来是黄色的,一个是明显的紫色。

如果这三组数据相互重叠,似乎可能是正确的图像?

0 投票
1 回答
1123 浏览

qt - 使用 QGrahicsRectItem 拖动大于项目本身的矩形

我对 a QGrahicsRectItemin a有问题QGraphicsScene。我想要的是能够用鼠标移动项目。但问题是,在我的情况下,拖动矩形比项目本身大。

这是我使用的代码:

所以当我运行我的程序时,我有这个窗口,我可以拖动项目。一切似乎都很好。

屏幕1

但如果我仔细观察,拖动区域比项目本身大。(见下图蓝色矩形) 蓝色矩形表示如果我在这个矩形中移动鼠标,光标会改变,我可以拖动该项目。

屏幕2

我感觉问题与“fitInView(scene()->sceneRect());”有关 线。如果我删除它,那么它可以工作。例如,如果我添加一个“比例(5,1)”,就会出现同样的问题。

你知道问题可能是什么吗?

0 投票
1 回答
1982 浏览

events - pyqt graphicsitem 鼠标进入事件

我正在尝试连接到放置在 QGraphicsScene 上并通过 QGraphicsView 可视化的 QGraphicsItems 的鼠标输入事件。据我了解,为此覆盖的方法是从 QGraphicsItem (或其子类之一)派生的类中的 dragEnterEvent 。我的尝试如下所示:

我希望上面的片段能清楚地说明我想要做什么。请注意,显示完全按照我的意愿生成,没有问题 - 但是绘制的多边形没有响应输入事件 - 我没有看到任何证据表明正在调用 dragEnterEvent()。

0 投票
1 回答
1676 浏览

c++ - 如何从 QGraphicsItem 的上下文菜单中运行函数

我试图在我的 QGraphicsItem 子类中实现一个上下文菜单,如下所示:

我究竟做错了什么?文字“到了!” 永远不会被解雇,此外,我如何修改它以知道从菜单中选择了哪个操作?

谢谢