从 QGraphicsItem+QWidget 继承时的 GUI 冲突



我正在编写一个继承自QGraphicsItem和QWidget的类。我这样做的原因是我想利用setPos()和setRotation()(来自QGraphicsItem)来使其可拖动和customContextMenuRequest信号(来自QWidget)。代码如下所示:

class MyClass: public QWidget, public QGraphicsItem {    
Q_OBJECT 
/* Variables and Methods here */ 
};

我不是QT及其在每个细节上如何工作的专家。但是,通过测试代码,我感觉MyClass实际上由两个可能具有不同位置的GUI元素组成。问题是当我将它们放在彼此之上时,我要么无法让上下文菜单工作,要么无法拖动东西。所以我假设顶部只能有一个(接收鼠标单击事件)。MyClass 将 QGraphicsScene 作为 QGraphicsItem,而 QGraphicsScene 设置为 QGraphicsView(如果相关)。

我的假设正确吗?

处理此问题的优雅方法是什么?

提前感谢!

编辑:如果它有帮助,这就是我的应用程序基本上应该做的。 用户应该能够将多个MyClass对象和类似对象添加到场景中,并自由移动/旋转它们。

QWidgetQGraphicsItem在Qt中是根本不同的东西。从文档中QGraphicsItem是:

类是 QGraphicsScene 中所有图形项的基类。

它为编写自己的自定义项提供了轻量级基础。这包括通过其事件处理程序定义项的几何图形、碰撞检测、其绘制实现和项交互。QGraphicsItem 是图形视图框架的一部分

基本上它只用于QGraphcisScene

如果您需要可从QWidget获得的自定义上下文菜单,我将在自定义QGraphicsView中实现这一点,该(最终)继承自QWidgetQGraphicsView可用于显示将保存自定义QGraphicsItemQGraphicsScene

相关内容

  • 没有找到相关文章

最新更新