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

qt - 为 QGraphicsItem 创建着色器程序

我有一个 QGraphicsScene,我在其中添加了一个 QGraphicsItem。在 QGraphicsItem 中,我渲染了 OpenGL ES 2.0 的 hello triangle 示例中使用的三角形。问题是,如果我在函数以外的任何地方创建和编译着色器QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget),它们就不会被编译。我知道您应该激活 GL 渲染上下文,但是当我将视口设置为 GLWidget 时不会发生这种情况吗?我尝试了各种方法,例如在 QGraphicsItem 构造函数或 QGraphicsScene 中编译它们并将 QGraphicsItem 设置为父级(我了解到它们是非常愚蠢的事情),但(显然)没有任何效果。对我来说最合乎逻辑的是在 QGraphicsItem 类中创建一个 initShaders() 函数,并在我的场景中创建项目后调用它,但这也不起作用。

0 投票
2 回答
10722 浏览

qt - QT:qobject_cast 的问题

我派生了 QGraphicsItem 和 QGraphicsScene 类。我希望项目能够调用scene() 并获得derviedGraphicsItem * 而不是QGraphicsItem *,因此我重新实现了QGraphicsScene::itemAt 以返回派生指针。

我收到以下错误(Qt 4.6,Ubuntut 10.4 上的 GCC 4.4.3)

然后我注意到 QGraphicsItem 没有继承 QObject,所以我让派生的 QGraphicsItem 类从 QObject 和 QGraphicsItem 具有多重继承,并且在添加 Q_OBJECT 宏并重建项目后,我得到了同样的错误。

我会以错误的方式解决这个问题吗?我知道尝试将父类转换为子类应该是不好的设计,但在这种情况下,这似乎是我想要的,因为我的派生项类具有新功能,并且它的对象需要一种方法来调用该新功能自己周围的项目,并用 itemAt() 询问项目场景对象似乎是最好的方法 - 但我需要 itemAt() 返回正确类型的指针。我可以通过让派生项目使用 dynamic_cast 转换 QGraphicsScene::itemAt() 返回的 QGraphicsItem * 来解决这个问题,但我真的不明白为什么它有效而不是 qobject_cast,或者使用 dynamic_cast 与 qobject_cast 的优缺点.

编辑:忘了提到我还在派生类中重新实现了 QGraphicsItem::scene() 以返回 DerivedScene *,如

但这似乎不会导致编译错误...

0 投票
2 回答
630 浏览

python - PyQt:带有 setPosAt 的 QGraphicsItemAnimation

我遇到了一个小问题,因为我无法通过重写 setPos 方法来创建简单的 setPos 动画,如下所示:

提前致谢, b52

0 投票
1 回答
2584 浏览

qt - Qt QGraphicsItem 移动动画

我现在想知道我应该如何在 QGraphicsItem 上编写“移动动画”。类似于 moveBy(qreal, qreal) 但不是即时的。我应该在 QtAnimation 框架中寻找它吗?

0 投票
1 回答
3611 浏览

qt - QGraphicsItem's - 选择和旋转

我想实现允许用户选择几个QGraphicsItems然后将它们作为一个组旋转的应用程序。我知道我可以将所有项目添加到一个中QGraphicsItemGroup,但我需要保留Z-value每个项目。可能吗?

我还有第二个问题。我试图QGraphicsItem围绕某个点旋转(不同于(0,0)- 比方说(200,150))。在那次操作之后,我想再次旋转这个项目,但现在是(0,0). 我正在使用下面的代码:

我注意到,在第二次旋转之后,该项目不是围绕点旋转,(0,0)而是围绕其他点旋转(我不知道是哪个点)。我还注意到,如果我改变操作顺序,一切都会很好。

我究竟做错了什么?

0 投票
4 回答
5655 浏览

c++ - 绘制 QGraphicsItem 的边框

怎么画边框QGraphicsItem?简单painter->drawRect( boundingRect() )的重载绘制方法是不正确的(右下角在项目之外)。

0 投票
2 回答
3037 浏览

qt - 如何获取点击QGraphicsItem的事件,通知focusOut

我有一个从 QGraphicsItem 实现的类,称为 Node。

我有一个矩形的“节点”,当用户点击它时我可以做一些事情

我使用 mousePress 和 mouseRelease 事件。

但是我想在用户单击“超出”矩形形状时收到通知。

我试图实现这些功能:

Qt代码:

如果我点击进入或离开矩形,这些不会做出反应。我应该自己设置一个逻辑,例如获取鼠标位置并控制它是否超出矩形?还是有内置方法?

或者“节点”对象如何知道是否单击了其他节点对象?

我也想知道,谷歌搜索但找不到焦点事件和焦点事件何时触发?我想当我点击项目时,focusOutEvent 必须工作,然后退出项目,我错了吗?

谢谢你的想法。

0 投票
1 回答
633 浏览

image - QGraphicsPixmapItem not displaying image

Can help? I just get a blank view with vertical scrollbar. Can check the code? I think the trouble starts at item.setPixmap(pixmap); because the pixmap is the same size of image that is the image is loaded into it. thanks

0 投票
1 回答
695 浏览

qt - 获取元素是否集中在函数 QGraphicsItem::shape() 中的优雅方法

在图形 qt 应用程序中,我可以了解从 QGraphicsItem 继承的对象是否专注于绘制方法:

Qt代码:

但我必须点击它,无论是否聚焦,形状都必须改变。如果集中信息我怎么能得到

Qt代码:

以适当的方式方法?我想声明一个全局变量,但我不喜欢这个想法。谢谢

0 投票
2 回答
1560 浏览

qt - 关于 QGraphicsItem 的 'itemChange()' 的问题

在 itemChange 的函数中,首先,我获取将要添加的子项,然后我使用 dynamic_cast 将其转换为 'MyItem',但转换总是失败。

非常感谢!