问题标签 [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 投票
1 回答
5707 浏览

c++ - 为什么我的 QGraphicsView 没有出现在 Qt4 的 MainWindow 中?

这可能是非常明显的事情,但我对 Qt 有一个新的认识,无法弄清楚。我有一个简单的 MainWindow,它有一个按钮。单击该按钮时,我想创建一个 QGraphicsScene,添加几行,然后在窗口中显示。但是,当我在窗口中运行此代码时,它不会显示出来。

但是,如果我将它作为 QApplication 运行,它会显示得很好。我错过了什么?

这是主窗口中的代码:

}

0 投票
2 回答
3518 浏览

qt - 如何获取 QGraphicsScene 报告项移动事件

Qt 的 QGraphicsScene 提供了一些开箱即用的好功能:用户可以选择对象并移动它们。

我还想要一件事 - 当用户完成移动对象时收到通知。有较低级别的事件,例如鼠标移动、按下、释放,但我不想重新实现已经存在的功能(移动对象)。

http://doc.trolltech.com/4.2/qgraphicsitem.html#itemChange方法看起来很像,但是当用户移动对象时不会调用它。

我正在使用 Qt 4.6

事实证明,您必须设置一个标志才能启用此事件: item->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);

但是现在每次项目的坐标更改时都会触发该事件。我只想在用户完成更改时才进行活动。

0 投票
1 回答
3534 浏览

qt - 在 QGraphicsScene 的背景中使用项目

我有一个 QGraphicsScene,我最初在 drawBackground() 函数中绘制了背景。然而,这需要大量的计算并且结果非常慢,所以我创建了一堆项目。这具有预期的加速。

我的问题:有没有办法将这些项目视为背景?如果我将它们视为背景项目,这是否重要?

谢谢

0 投票
1 回答
851 浏览

qt - QGraphicsView 接受的事件

我正在使用 Qt Graphics View 框架来创建一个场景并将多个视图附加到同一个场景,其中这些视图将 3D openscenegraph 场景渲染为背景,而 2D 绘图是一种叠加。

我试图在我的 OverlayViewport 类(继承 QGraphicsView)中拦截鼠标/键事件并相应地导航 3D 场景。下面是一个示例事件处理程序:

但事件总是被接受,因此我的 3D 场景代码永远不会执行。如果我删除 isAccepted() 检查,我的代码总是会执行。

我想要实现的是,让场景做它的事情,比如选择、拖动 vs,如果它不做任何事情(不接受事件),做我的 3D 事情。

所以,这是我的问题:
1 - 我在这里走错路了吗?
2 - 如果场景不接受事件,我应该将事件转发到附加视图的场景并做我的事情吗?
3 - 如果不是 2,我应该如何进行?

最好的祝福。

0 投票
1 回答
589 浏览

qt - Qt4:比例不变的 qgraphicsitem 轮廓

我正在使用 Qt4 GraphicsView 框架绘制一些多边形,并且允许用户放大和缩小绘图。当用户更改视图中的缩放级别(比例)时,我希望多边形变得越来越小,但是有没有办法使轮廓厚度始终保持不变?

谢谢!

0 投票
1 回答
517 浏览

qt - 如何测试接近 QGraphicsPathItem 的轮廓?

我正在尝试测试给定点(x, y)是否位于或靠近a的轮廓QGraphicsPathItem

使用QGraphicsItem.contains().collidesWithItem() / Path()不使用:如果该点包含在路径内部的区域内,它们也会返回 True,而我只想测试轮廓上的点。我怎样才能做到这一点?

0 投票
1 回答
2203 浏览

c++ - 如何在 Qt 中实现类似 Google 地图的磁贴滚动?

我正在使用 Qt/C++ 并尝试绘制一个大而复杂的 QGraphicsScene。一旦我添加了很多对象,平移和缩放就会变得非常缓慢。(当然,这并不奇怪)。我玩过设备坐标缓存(有助于平移到一个点)和最小的视口更新等等,但最终对象太多了。我想做的是以某种方式从控制 UI 中异步绘制项目。换句话说,就像谷歌地图一样,我想平移和缩放,让绘图尽可能快地赶上,但能够在项目完成绘制之前再次平移。

我正在尝试的一种方法是创建两个 QGraphicsScene。一个具有实际对象,但未附加到 QGraphicsView。另一个 QGraphicsScene 连接到 QGraphicsView,但它只有一些平铺的 QPixmap,其大小可以覆盖屏幕。该计划是使用空闲 CPU 周期来更新任何需要它的图块像素图。这似乎会给我对渲染的必要控制(所以我不必在重新渲染整个可见场景时阻塞)。想法?有没有人实施过这个?

0 投票
1 回答
1242 浏览

c++ - Qt4:在操作 QGraphicsItem 时将鼠标光标锁定到位

我正在使用 QGraphicsScene 在 Qt4 中编写一个小 GUI 实用程序。当您四处移动时,其中一个项目会在水平面上跟踪鼠标,按住修改键可以更改项目的旋转。旋转项目时,我希望鼠标光标变为弯曲箭头(或其他东西)并在视觉上锁定到位,因此移动它会影响项目,但不会影响鼠标光标本身。

释放修饰符会将(以前不可见的)光标放回其原始点:这是为了防止项目“跳转”到鼠标的新水平位置,这是我的主要问题。

我真的不知道如何在 Qt4 中实现这一点,而不涉及做一些可怕的事情,比如:

  • 按下修改器时存储当前鼠标位置
  • 将光标切换到什么都没有的位图
  • 不知何故在原来的地方画了一个假光标(!?)
  • 删除假光标并在完成后切换鼠标位置

如果有人能想出更好的方法来实现这一点,将不胜感激。首先,我并不太喜欢整个固定鼠标光标的想法,但这是我能想到的解决这个问题的唯一方法,控制方案可以很好地工作。

编辑:我尝试了上面概述的废话方案,但遇到了以编程方式移动鼠标位置的问题。仍然试图记住我以前在哪里使用过类似的系统:基本上它是一个旋钮。您单击它并上下移动鼠标,从而旋转旋钮。当您松开鼠标按钮时,指针又回到了您最初放置的位置,即旋钮上。

0 投票
2 回答
1618 浏览

qt - 获取 qgraphicsview 的快照

我正在使用 Qt 4.5 和 qgraphicsscene/view 向用户显示视频。我想提供一个“购买快照”按钮,并且我确信有一种非常简单的方法可以让我想到的所有事情都简单得多。我怎样才能优雅地做到这一点?

顺便说一句,代码在这里: http: //gitorious.org/handy

0 投票
2 回答
6623 浏览

qt - QGraphicsView 和 eventFilter

这已经困扰我两天多了,所以我想我应该问一下。我在 Win7 上使用 Qt 4.5.3(用 VC2008 编译)。

我有 MyGraphicsView(继承 QGraphicsView)和 MyFilter(继承 QObject)类。

当我将 MyFilter 对象作为事件过滤器安装到 MyGraphicsView 时,鼠标事件在传递到 MyGraphicsView传递到 MyFilter,而键事件在传递到 MyGraphicsView之前传递到 MyFilter。

在第二种情况下,我将 MyFilter 对象作为事件过滤器安装到 MyGraphicsView->viewport() (这是标准 QGLWidget),鼠标事件在传递到 MyGraphicsView之前传递到 MyFilter,而键事件仅传递MyGraphicsView .

事件应该在传递给实际对象之前传递给事件过滤器,那么为什么会发生这种情况呢?我应该怎么做才能确保这个订单?

提前致谢。最好的祝福。