问题标签 [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.
c++ - 在窗口调整大小时重新定位图形项目
好的,我基本上在图形场景中随机放置了图形项目。我打开一个窗口并显示这些项目。当我调整窗口大小时,我希望这些项目保持相同大小但与窗口大小成比例地重新定位。我是如何做到这一点的,我将图形视图子类化,然后当发生调整大小事件时,它将调整大小对象发送到我的图形场景对象。然后我能够做这样的事情:
然后我使用这些值来做到这一点:
这工作正常,但如果我将窗口调整得非常小或大,那就不太对了。我认为问题在于图形场景矩形和图形视图矩形不一样或什么。此外,我有一个调整窗口大小的背景:
这是我正在编写的程序中需要的东西。此外,它允许我查看调整大小是否有效。我基本上可以将背景设置为多边形,然后在多边形的边缘放置点。当我将图像调整为非常大或小时,这些点不再位于多边形的顶点上,尽管它们有点接近。有谁知道更好的方法或解决方法?谢谢。
编辑:这是我正在做的项目:
dropbox.com/s/myxi8kvdl7x9ye2/ncorr.tar.gz
c++ - Qt 程序在 Windows 中绘制折线时崩溃
我开发了一个跨平台的 Qt 程序,它在 QGraphicsScene 上绘制折线:
当程序收到以下值时,程序在 Windows 上崩溃:
这条折线由一条几乎水平的线组成。当直线水平或 y1 和 y2 之间的绝对差为 0 或大于 0.5 时,不会发生崩溃。它不会在 Ubuntu 上崩溃。
当我将折线更改为多边形时,程序不会崩溃。我最好但丑陋的解决方案是将折线绘制为多边形 - 将相同的点两次附加到多边形:
我试图在一个小型且独立的程序中重新创建该错误,该程序在 QGraphicScene 上绘制一条具有相同坐标的线。没有观察到崩溃。
为什么会发生这种崩溃?这个错误有更漂亮的解决方案吗?
顺便说一句,VS2008 调试器中的调用堆栈告诉我崩溃是在由 QtGui4.dll 调用的 msvcr90.dll 中的 malloc.c 中。
技术:
Qt版本:4.7.0
操作系统:Windows 7 和 Ubuntu
c++ - QGraphicsScene 类似 removeAt() 和 insert() 函数?
我有一个 QGraphicsScene,其中项目的顺序非常重要。我想在项目列表中的某个索引处添加项目(即items()
调用时返回的列表)。
我知道 QList 具有removeAt()
andinsert()
功能,但 QGraphicsScene 是否有类似的东西,比如addItemAt()
所有这些行?如果没有,有没有人知道解决这个问题的好方法?
qt - Qt:QGraphicObject 和 QImage
我有一个QGraphicsObject
包含 aQImage
和 ovveride的派生类
在痛苦中我成功地画了QImage
。是的QGraphicsObject
一个项目QGraphicsScene
,后者在 a 内QGraphicsView
。QImage
尺寸超过QGraphicsScene
尺寸。我的目的是为了drag
显示QImage
(或QGraphicsObject
)的超出部分QImage
。我怎样才能做到这一点?有translate
画布QImage
吗?
可以给我一些文档或示例吗?
谢谢
c++ - QGraphicsScene 缺少特定项目更新
我有一个应用程序,您可以在其中观看给定 2D 游戏的回放:
基本上,车辆在地图上移动。视图以车辆为中心,因此地图在回放时滚动,类似于Micro Machines(这只是为了提供一个想法,实际游戏不是Micro Machines)。
(来源:randomracket.com)
在我的场景中,当车辆四处移动时,地图是静态的。回放的每一帧视图都在滚动,因此车辆居中。出于性能原因,地图在几个QGraphicsPixmapItem
s 中平铺。
视口更新模式设置为QGraphicsView::BoundingRectViewportUpdate
。项目索引方法设置为QGraphicsScene::NoIndex
.
在大多数情况下,一切正常。但是当地图比平时大时,车辆不会更新。视图正在滚动,图块更新良好;但不是车辆,除非我通过放大/缩小触发完整的视口更新(所以我知道该项目定位良好)。
车辆的 boundingRect 永远设置一次,并且是有效的(见下文,以逻辑坐标给出)。我不在项目的边界矩形之外绘制。
调试输出的一些示例(只有第三个配置不起作用):
我试图调试一个更新通道,并且油漆事件确实排除了车辆所在的区域......
任何人都知道为什么更新可能会错过特定项目?
编辑 :
Qt:4.8.1,我也看到了以前版本的问题
操作系统:Windows XP SP3,尚未在其他操作系统上测试
我没有成功地用一个最小的例子重现这个问题。最小的例子就像预期的那样工作。在现实生活中,这是完成的:
地图是从文件中读取的。它由多达数百个界定地面/天空的多边形(每个多边形以图形方式由多边形、边和顶点层组成)、数千张图片和纹理组成,然后将其剪裁到地面或天空,以及其他一些项目。
我计算所有剪辑,然后在 QImage 中渲染场景。图像在添加到场景中的几个 s 中平铺
QGraphicsPixmapItem
,而以前的项目从场景中删除并删除(顺便说一下,当我没有删除和删除以前的项目时,也会出现错误)。重播开始了
我认为 Qt Graphics 内部搞砸了,但我不知道如何清理/重置它。
这是一个图形示例(说明我所说的地面/天空的意思)。地图可能非常巨大。
(来源:kopasite.net)
qt - 如何使 QGraphicsItem 在 QGraphicsScene 中显示背景?
在 aQGraphicsScene
中,我有一个背景设置,QGraphicsItem
上面有几个 s。这些图形项具有任意形状。我想制作另一个QGraphicsItem,即一个圆圈,当放置在这些项目上时,它将基本上显示这个圆圈内的背景,而不是用颜色填充。
这有点像在 Photoshop 中具有多层背景。然后,使用圆形选框工具删除背景顶部的所有图层以显示圆圈内的背景。
或者,查看它的另一种方式可能是设置不透明度,但此不透明度会影响其正下方的项目(但仅在椭圆内)以显示背景。
qt - PySide 移动 QGraphicsPixmapItem 跳转到场景左上角
我正在编写一个应用程序,该应用程序允许用户通过单击空白区域将图像放置在 QGraphicsScene(包含在 QGraphicsView 中)上,然后使用 mousemoveevent 移动它们。图像是使用子类 QGraphicsPixmapItem 创建的。
问题出在:第一次尝试移动项目时按预期工作。但是,对于所有后续移动,所选项目会立即跳转到场景的左上角。这是代码:
任何帮助,将不胜感激!
qt - 移动 QGraphicsItem 的“图形”
我有一个带有自定义图形的 QGraphicsItem,如下图的上半部分所示,其中红色圆圈是shape()
该项目的:
有没有办法保留图形,但只是像下半部分所示的那样移动它?
c++ - QT keyPressedEvent 太慢?
我正在用 qt creator 开发一个射击游戏,我的问题是与keyPressEvent
我的场景功能的链接:
它可以编译,但我的精灵(vasisseau)移动得很慢。如何改进代码以使其运行得更快?
qt - QGraphicsItem.scene() 的 0/0 点(限制项目移动)
我在限制 QGraphicItems 的移动时遇到问题:
这段代码应该防止一个项目被拖到场景的左边,从而增加它的大小。它有点工作。我的问题是:
我在创建场景时插入项目。On 位于 x=0(场景坐标)。另一个位于 x=10(场景坐标)。使用此代码,我不能拖动 x=10 左侧的第二个项目。
似乎对QGraphicsItem::scene()的调用为这两个项目返回了不同的场景。