问题标签 [qgraphicsscene]

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

performance - 对于 QGraphicsScene 在 QGraphicsItem 上使用 setZValue 会导致严重减速

我正在使用 Qt(Mac,4.7 版)通过 QGraphicsView 和 QGraphicsScene 渲染一个相当大的场景(来自 Open Street Maps 的地图数据)。在我尝试为场景中的项目设置 Z 值之前,一切都很好。我尝试了两种不同的方法来做到这一点。一方面,我只是这样做:

另一个我创建了自己的 QGraphicsItem 子类,但遇到了完全相同的问题。

速度变慢的原因似乎是在 Qt 方面。设置 z 值后,场景生成需要很长时间(需要几分钟才能显示任何内容,并且我得到旋转的死亡沙滩球),但是一旦生成,速度就会恢复正常. 此外,当我尝试关闭应用程序时,它会在关闭前挂起几分钟。如果我不考虑 z 值,我看不到任何这些问题,并且我添加了调试代码以验证它没有出现在我自己的代码中。

不幸的是,我需要设置 z 值才能正确渲染街道(例如道路周围的轮廓,使高速公路的顺序高于街道等)。

任何帮助是极大的赞赏!

0 投票
1 回答
1597 浏览

python - 为什么从 QGraphicsScene 渲染的 PNG 图像偏移不正确?

我有一个程序可以将 a 的内容绘制为QGraphicsScenePNG 图像。我发现在某些情况下未正确创建 PNG 图像。生成的图像似乎有一定程度的“偏移”,因为 PNG 图像的左上角QGraphicsScene不在 (0,0) 处。

下面的代码演示了这个问题。该createImage函数创建一个QGraphicsScene给定宽度和高度的 a,在坐标 (0, 0) 处绘制一个与场景具有相同宽度和高度的红色实心矩形,将此场景渲染为图像并将图像写入文件。我相信这个函数应该总是写出一个纯红色的图像,不管它给出的宽度和高度如何。但是,是一个示例输出图像,它表明情况并非如此。

testImage函数(依赖于PIL)读取图像并检查最右边的列和底行。如果图像被错误地“偏移”,它将在底行或最右列的某处找到一个白色像素。如果图像已正确生成,则底行和最右列将仅包含红色像素。(PIL 不是问题的一部分;我只是用它来自动测试输出图像。)

以下是一些示例运行:

在这种情况下,“偏移”的效果非常强烈,以至于整个输出图像都是白色的。

这就是生成我上面链接到的示例图像的情况。

此时,图像现在正确地垂直偏移了,但红色矩形仍然被绘制得离右边太远了 55 像素。

现在几乎正确...

因此,如果图像足够大,代码似乎可以正确生成输出图像。

碰巧,我有一个解决这个问题的方法。如果我替换该行,我可以获得createImage正确创建图像的功能

我不知道这段代码中“神奇”数字的意义是什么。但是,我已经使用此解决方法运行了大量测试,并验证它们都生成了正确的纯红色图像。

有这个解决方法没问题,但我想了解为什么这些图像没有正确创建。有什么我错过或忘记做的事吗?

0 投票
1 回答
6497 浏览

c++ - 使用 QGraphicsScene 平滑动画

我希望我的问题并不总是同一个问题。我有一个 QGraphicsScene。它的项目是一些 QGraphicsPixmaps。我用一个每秒做 SetX +10 的计时器来移动它们。我设置了+10,因为窗口很大100。使用这个解决方案我的动画不流畅。我想我可以通过设置而不是 +10 a +1...+10 来使它们更平滑。但它没有用。

你能建议我一种方法吗?非常感谢。

在我程序的核心部分中,每个演员都是我的游戏角色(在他的功能中,例如移动 ecc)。sceneItems 是一张地图,我在其中将每个演员与他的像素图相关联。x, y 是抽象场景中的位置,x*SIZE 是图形场景中的位置。抽象场景中的位置正在更新,我在图形场景中表示它们。

0 投票
1 回答
209 浏览

qgraphicsscene - qgraphicsscene 可以转换为像素图吗?

我想将 a 转换QGraphicsScene为像素图,所以我可以将它作为QGraphicsPixmapItem. 我想知道这可能吗?换句话说,我想要得到的只是 a thumbof a QGraphicsScene

0 投票
3 回答
1939 浏览

qt - 在 QGraphicsItem(父级)中绘制形状,其位置相对于父级

我有我自己的对象实现QGraphicsItem- 它本质上只是一个带边框的正方形。我正在尝试在该项目中绘制形状,将其用作父项。问题是我用于父级中的形状的坐标不是相对于父级的坐标,而是相对于场景。

示例:我想QGraphicsLineItem在我QGraphicsItem的(父母)内画一个。父级为 50,50,尺寸为 20x20。如果我使用指定的父级绘制一条线,使用坐标 0,0,20,20,它会在相对于场景而不是父级的 0,0,20,20 处绘制。

有没有办法让线条(或任何其他形状)使用相对于父级而不是场景的位置?或者我是否需要通过检查父母的 X 和 Y 来手动确定坐标?

0 投票
2 回答
600 浏览

c++ - 将自己的对象放入 QGraphicsScene

我想有一个基于图像的拖放功能。如果我拖放一个图像,我想知道我选择并移动了哪个图像(一个简单的 std::string 可以唯一标识该图像所代表的对象)。我的想法是将我自己的对象(QPixmapItem)存储在 QGraphicsScene 中:

这是我用来将对象添加到场景中的方法:

这是我尝试在 QMouseEvent 中“捕获”对象的方法:

对象被添加到场景中,但每当我按下它们时,最后一行(“按下的项目”)永远不会出现在屏幕上。

0 投票
1 回答
633 浏览

c++ - 在不同的 QGraphicsView 之间拖放

我有一个 QMainWindow,其中有两个 QGraphicsView,每个都拥有一个 QGraphicsScene。两种视图都不断显示(在屏幕上)。我希望能够将对象(从 QGraphicsItem 子类化的类的对象)从一个 QGraphicsView 拖放到另一个。最好的方法是什么?

ps:我可以在一个QGraphicsView里面拖拽

0 投票
2 回答
397 浏览

c++ - Qt4:QGraphicsScene/View 和自定义转换方法?

我知道可以在 Qt 中使用仿射变换。但是是否也可以设置一个完整的自定义全局变换方法呢?

用例:在地理坐标中(在 QGraphicsScene/View 的上下文中)绘制投影地理点(纬度、经度)或检索鼠标事件等。

目前我这样使用它(一点点伪代码):

而且我想在某处“注册”我的转换方法,以便 QGraphicsView(或负责人)在在屏幕上绘制某些内容之前在内部使用这些方法。

或者这既没有意义(因为它会在我不期望的地方引入问题,例如在计算距离时)也不可能?

0 投票
1 回答
806 浏览

python - QGraphicsTextItem RightToLeft 文本

我必须将一些波斯语文本写入 a QGraphicsTextItem,但我找不到如何QGraphicsTextItem编写 RightToLeft!。
谁能帮我?。

我尝试过这种方式,但它对我不起作用:

谢谢你。

0 投票
1 回答
472 浏览

qt - 重绘 QGraphicsItem 时重新定义 QPainter 选项

我想在 QGraphics 场景中绘制每个 QGraphicsItem 之前重新定义 QPainter。

现在已经过时了,什么是“新”方法?

谢谢