我要做的是删除或更新我添加到QGraphicsItem
的QGraphicsSimpleTextItem
的文本值,但由于某种原因,文本不更新,但它在创建的项目中累积。这是我现在所做的:
void DiagramItem::mouseDoubleClickEvent( QGraphicsSceneMouseEvent* event )
{
if (event->button() != Qt::LeftButton)
{
return;
}
Dialog *mydiag = new Dialog();
mydiag->show();
if(mydiag->exec())
{
QString tx = mydiag->getname();
txt = new QGraphicsSimpleTextItem;
txt->setText(tx);
txt->setParentItem(this);
}
}
也许您只需要从代码中删除两行:
QString tx = mydiag->getname();
// txt = new QGraphicsSimpleTextItem;
txt->setText(tx);
// txt->setParentItem(this);
这样你就不会一直创建新项目了。
但在此之后你可以再删除一行:
// QString tx = mydiag->getname();
// txt = new QGraphicsSimpleTextItem;
txt->setText( mydiag->getname() );
// txt->setParentItem(this);
是否在类构造函数中初始化txt ?如果是,那么前面的代码就可以了,但是如果不是,那么你可能想使用这个:
if ( txt == nullptr )
{
QString tx = mydiag->getname();
txt = new QGraphicsSimpleTextItem;
txt->setText(tx);
// txt->setParentItem(this);
}