QGraphicsSceneTextItem удалить старый текст
Что я хочу сделать, это удалить или обновить текстовое значение QGraphicsSimpleTextItem
что я добавил в QGraphicsItem
, но по определенной причине текст не обновляется, но он накапливается в созданном элементе. Это то, что я сделал на данный момент:
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);
}
}
1 ответ
Может быть, вам просто нужно удалить две строки из вашего кода:
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);
Вы инициализируете текст в конструкторе класса? Если да, тогда предыдущий код будет в порядке, но если нет, вы можете использовать это:
if ( txt == nullptr )
{
QString tx = mydiag->getname();
txt = new QGraphicsSimpleTextItem;
txt->setText(tx);
// txt->setParentItem(this);
}