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

c++ - 调整 QGraphicsItem 的大小以占用 QGraphicsView 中的所有空间,调整窗口大小时出现问题

我有一个QGraphicsItem(实际上是 a QDeclarativeItem),我希望它占据它被添加到的QGraphicsView(同样,它实际上是派生QDeclarativeView类)的整个可见空间。通常,您可以使用QDeclarativeView::setResizeMode(QDeclarativeView::SizeRootObjectToView)并将QDeclarativeView自动调整根对象的大小以适合视图。

我遇到的问题是我正在使用手动创建根小部件

而不是QDeclarativeView通过调用setSource(). 我这样做的原因是因为我想在某些事件发生时交换 QML 场景,但我不想破坏之前的场景。调用setSource()删除之前添加setSource()的所有项目。因此,我自己创建“根对象”并手动将其添加到场景中。

我正在使用 windows resizeEvent来调整我的大小QDeclarativeItem,如下所示:

这确实有效!但是,它不是很漂亮。如果您快速调整窗口大小,QDeclarativeItem则调整速度不够快,您会在它赶上并调整大小之前短暂看到灰色背景。它也不是很顺利。

仅当我调整了复杂项目的大小时才会发生这种情况(在我的情况下,它是一个 QWebKit 小部件)。它适用于更简单的项目。然而,问题是,如果我让它QDeclarativeView这样做,我就没有这些问题:它的大小调整正确且平滑。

我想这不是特定于 QtDeclarative 的东西,而是 QGraphicsView,虽然也许我错了。

有没有人有任何想法?

0 投票
1 回答
310 浏览

qt - Big QPixmaps 与 OpenGL 崩溃

我正在编写一个有很多图像的 QGraphicsView。但是当我显示分辨率为 8528 x 1128 像素的 JPEG(全景图像)时,QGraphicsPixmapItem 不会呈现。它只显示一个黑色方块。“正常”尺寸的图像呈现良好。我还没有尝试找到问题发生的大小的“魔术限制”。

在我装有 Ubuntu 10.10 x64 的笔记本电脑上,它还会破坏显卡驱动程序并重新启动 Gnome 会话!

如果我禁用 OpenGL,一切正常。

为什么?有什么我可以做的吗?

我发现另一个有一个非常相似的问题:http ://www.qtforum.org/article/34238/really-strange-problem-with-qgraphicsview-and-opengl.html

0 投票
2 回答
2654 浏览

qt - 使 QGraphicsView 做平滑 centerOn

我在 Qt 中并不是真正的新手,但有一些我不知道的事情......我正在使用 Python 编程,但请随时用任何语言发布您的答案。

所以,我有几个QGraphicsItem (s),位于QGraphicsScene内,使用普通QGraphicsView查看场景。一切正常。

我的场景非常大,10,000 x 10,000 像素,所有图形项目都分散在周围。

例如 :

我的问题是,如何使用类似于centerOn的东西将视图集中在每个项目上,但又很顺利?

目前,centerOn 在下一个项目上运行很快,我想慢慢移动它,也许使用QPropertyAnimation 和缓动曲线?

我尝试在一个大圆圈中使用view.translate(1, 1)将视图移动到下一个项目,但移动速度太快,就像 centerOn 一样。

我试图在翻译之间用time.sleep(0.01)进行一些等待,但是窗口会阻塞,直到 cicle 存在......所以这很糟糕。

非常感谢 !

0 投票
1 回答
527 浏览

c++ - mousePressEvent 没有正确绑定?

为了熟悉 Qt 的图形视图,我在 Qt 中实现了一个简单的棋盘。目前还没有棋子。

我使用矩形来表示每个图块,因此我创建了BoardTile类(继承自QGraphicsRectItem),以便我可以定义一个mousePressEvent.

这是我与鼠标单击相关联的一些测试代码:

当我单击第二行的第一个图块时,我收到以下消息:

单击的图块 (1, 0)

然后,当我单击任何其他图块时,我会收到完全相同的消息。消息的内容取决于我首先单击的哪个图块。为什么是这样?我绑定mousePressEvent不正确吗?

完整代码 http://www.box.net/shared/4m6nrvuxa4 (更新1)

更新 2:我注意到,如果我放event->ignore();mesg.exec(),它工作正常。我知道这不是一个解决方案(因为它可能会导致各种奇怪的行为),但我确实想知道为什么它会起作用。这是否揭示了我在实施过程中可能犯的任何错误的关键信息?

更新 3:有人告诉我应该尝试更改mousePressEventmouseReleaseEvent. 奇怪的是,这行得通。据我所知,这两个事件之间的唯一区别是第一个事件在您按下鼠标按钮时触发,而后者在您释放该按钮时触发。那么为什么会mouseReleaseEvent触发所需的行为而mousePressEvent不会呢?

0 投票
1 回答
3137 浏览

qt - Qt QGraphics在中心查看一张背景图片

我的QGraphicsView项目比它的背景图像大很多,但我希望该背景图像只绘制一次。现在,整个事物都充满了该背景图像,其空间与它的空间一样多。

那么,如何强制将背景图像仅绘制一次到视图的中心?

这是我目前正在使用的代码:

谢谢您的回答!

0 投票
2 回答
2504 浏览

c++ - 如何在qt中同时移动滚动条

我有两个视图,它们的视角是 xy 和 xz。这些视图有自己的滚动条,并且这些视图的 x 侧是相等的。当我移动 x 边的滚动条时,我希望 x 滚动条同时移动。

视图类是QGraphicsView并且这些视图的滚动条是它们自己的滚动条。我怎样才能做到?任何帮助将不胜感激。

谢谢

0 投票
1 回答
6392 浏览

qt - 在 QGraphicsScene 上接受 drop

我正在尝试为QGraphicsScene. 以下是我重载的事件:

现场仍然不会接受滴剂。我猜那是因为我setAcceptDrops(true)QGraphicsScene.

如何接受图形场景中的水滴?

0 投票
1 回答
714 浏览

macos - Mac 上的 PyQt4:带有 OpenGL 的 QGraphicsView 闪烁

在 Mac OS XI 下 QGraphicsView 和 OpenGL 有问题。有时,不是每次,当 QGraphicsView 更新时,都会闪烁。没有OpenGL,一切都很好。但我需要 OpenGL。在 Win 7 和 Ubuntu 下一切正常。我将 QT 4.7 与 PyQt 4.8.1 一起使用。我在带有 Mac OS X(10.6.4 和 10.6.5)的 Macbook Pro 2010 和 Macbook Air 2009 上进行了尝试。我将 DoubleBuffer 设置为 True 并尝试了其他一些东西。它没有任何效果。希望你们中的某个人可以帮助我解决这个问题。

0 投票
1 回答
1245 浏览

qt - 调整图像大小以适应 Qt 中的窗口

我正在使用 Qt 来构建应用程序。我的 MainWindow 包含一张地图图像,我想调整它的大小以适合窗口。这意味着当窗口变小时图像变小,反之亦然。当用户在该图像上选择一个点时,我想删除此功能。我是 Qt 的新手,无法弄清楚这一点。我为此使用 QGraphicsView。

0 投票
3 回答
1939 浏览

c++ - 当图形项目靠在其边框上时,使 QGraphicsScene 更大

我用a 制作了QGraphicsScene一个mouseClickEvent,让用户在其中创建蓝色方块。但是我想在将项目放在其边框上时使场景增长,以便用户永远不会用完图形场景上的空间。

在这种情况下,使图形场景更大的最佳方法是什么?