类之间的QT权限成员

时间:2016-06-29 12:46:27

标签: qt permissions

我想通过连接将在类函数中定义的成员parentWidget发送到另一个类,因为我想将它添加到列表中。 不幸的是,我对此会员权限有误。

回复错误是:

  

C2248:'QGraphicsWidget :: QGraphicsWidget':无法访问类'QGraphicsWidget'中声明的私有成员

所以这是我的功能

void DiagramScene::insertWidget(DiagramItem::DiagramType diagramtype)
{
   QGraphicsWidget parentWidget;

   //some code

   connect(this,SIGNAL(sendToItemList(QGraphicsWidget)),diagramitem,SLOT(addToItemList(QGraphicsWidget)));
   emit this->sendToItemList(parentWidget);
}

这是我的插槽:

void DiagramItem::addToItemList(QGraphicsWidget widget)
{
   QGraphicsWidget * newWidget;
   memmove(newWidget,&widget,sizeof(QGraphicsWidget));
   items.append(newWidget);
}

2 个答案:

答案 0 :(得分:0)

QGraphicsWidget继承QObject,因此无法复制。 addToItemList函数按值接收其参数,这会导致复制尝试。一种可能的解决方案是将函数的参数类型更改为QGraphicsWidget*,并将对象创建为QGraphicsWidget *parentWidget = new QGraphicsWidget()。这也可以消除代码中memmove的非常奇怪和错误的使用。

答案 1 :(得分:0)

我可能错了,但据我所知,你不能复制QGraphicsWidget,因为它继承自QObject(Can be read here)

我的建议:

void DiagramScene::insertWidget(DiagramItem::DiagramType diagramtype)
{
   QGraphicsWidget* parentWidget = new QGraphicsWidget();

   //some code

   connect(this,SIGNAL(sendToItemList(QGraphicsWidget)),diagramitem,SLOT(addToItemList(QGraphicsWidget)));
   emit this->sendToItemList(parentWidget);
}


void DiagramItem::addToItemList(QGraphicsWidget* widget)
{
   items.append(widget);
}