【发布时间】:2015-11-01 13:12:50
【问题描述】:
我已经创建了 Qt GUI 应用程序。它由QGraphicsScene 组成,通过按下或触发pushbuttons 将项目(QGraphicsItems)添加到其中。添加到场景中的每个项目都是派生自QGraphicsItem 的不同类的成员。现在,我的挑战是通过以下机制之一从场景中删除添加的项目:
1) 右键单击添加的项目,创建上下文菜单,然后使用
scene->removeItem(addedItem);
2) 双击删除项目的项目
3) 使用标志ItemIsSelectable 选择一个项目,然后按键盘上的删除键删除该项目
但是话虽如此,作为 Qt 的新手,我无法做到第 1 点,因为右键单击时不会显示上下文菜单。在数字 2 的情况下,我使用了信号和槽,每当双击一个项目时发出一个信号,mainWindow 中的一个槽吸收信号并删除该项目。但是这样,当我在项目类的头文件中添加Q_OBJECT 宏时,由于“发现重复符号”错误,程序无法编译。
所以我的最后一个选择是在屏幕上选择一个项目,然后通过按删除键发出键盘信号以删除该项目。怎么可能做到这一点?如果上述任何方法都可以轻松完成,请给我建议,以防我做错了。
附: : 我知道有很多关于删除 QGraphicsItem 和 QGraphicsScene 的问题,但没有一个是可靠的答案。
【问题讨论】:
标签: c++ qt qgraphicsitem qgraphicsscene