2015-06-04 74 views
0

我想要做的是刪除或更新QGraphicsSimpleTextItem的文本值,我將其添加到QGraphicsItem,但由於某些原因文本不更新,但它在創建的項目中累積。這是我做了什麼,現在:QGraphicsSceneTextItem刪除舊文本

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); 
    } 
} 
+2

它看起來像你每次創建新的文本項目。你需要保持一個指向添加文本項的指針,並用它來更新文本。 –

回答

0

也許你只需要消除你的代碼兩行:

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); 
}