正在尝试将QGraphicsScene与自定义QGraphicsItemGroup连接



我在Qt上有一个项目,它有一个带有QGraphicsView的GUI。然后,我有一个名为"GraphicsScene"的类,它是"QGraphicsScenne"的子类。之后,我有一个名为"Entidade"的类,它是"QGraphicsItemGroup"的子类。

当我点击GraphicsView时,我添加了一个新的"Entidade"项目。我想控制GraphicsView上项目的移动,为此我在Entidade.h上创建了一个名为movable的bool变量和一个称为void setMovable(bool toggled)的slot。因此,当操作为"true"时,我可以移动项目,否则(例如,选择了其他操作),无法移动项目。

在"GraphicsScene"类中,我创建了一个名为void setMovable(bool toggled)的信号。

所以,我尝试了这个:

主窗口.cpp

connect(ui->actionMover, SIGNAL(toggled(bool)),
graphicsScene, SIGNAL(setMovable(bool)));

GraphicsScene.cpp

connect(this,    SIGNAL(setMovable(bool)),
entidade, SLOT(setMovable(bool))); //entidade is a item to add to graphicsview

Entidade.h

class Entidade : public QGraphicsItemGroup
{
public:
Entidade();
Entidade(qreal x, qreal y, qreal w, qreal h);
private:
bool movable; //variavel para controlar o mover.
QGraphicsRectItem *entidade;
QGraphicsSimpleTextItem *texto;
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
public slots:
void setMovable(bool toggled);
};

在这一点上,当我试图运行该项目时,会出现以下错误:

E:QTProjectsfcTablesgraphicsscene.cpp:63: error: no matching function for call to 'GraphicsScene::connect(GraphicsScene* const, const char*, Entidade*&, const char*)'
entidade, SLOT(setMovable(bool)));
^

然后是这个:

C:QtQt5.1.15.1.1mingw48_32includeQtCoreqobject.h:214: error: no type named 'Object' in 'struct QtPrivate::FunctionPointer<const char*>'

我认为这是因为类"Entidade"不是QObject的子类(使用"Qt new class"创建它,类型信息字段为"None")

有人知道怎么解决?

附言:如果需要更多信息,请询问。=D

您是否尝试过QGraphicsItem的内置拖放切换,而不是重新设计机制?QGraphicsItemGroup也应该拥有它。

Qt:图形项目拖放

正确设置标志,它应该可以工作。

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新