【发布时间】:2011-10-04 08:05:06
【问题描述】:
我有一个包含 QTreeWidget 的 Qt 应用程序。 我想更换其中一项。
我有一个指针:
QTreeWidgetItem *elementToSubstitute;
还有一个返回QTreeWidgetItem*的函数。
我想在同一个地方用这个新元素覆盖之前的元素。 如果我删除前一个元素并在其后插入新元素,则新项目将放置在树的底部。
我应该如何继续让新分支完全替换以前的分支?
例如编辑
void MainWindow::addRoot(QString name ,QString description)
{
QTreeWidgetItem *itm = new QTreeWidgetItem(ui->tree);
itm->setText(0,name);
itm->setText(1,description);
QTreeWidgetItem *child1 = addChild(itm,"one","hello");
QTreeWidgetItem *child2 = addChild(itm,"two","hello");
QTreeWidgetItem *child3 = addChild(itm,"tree","hello");
QTreeWidgetItem *child4 = addChild(itm,"four","hello");
QTreeWidgetItem *parent = child2->parent();
int itemIndex = parent-indexOfChid(child2);
parent->removeChild(child2);
parent->insertChild(itemIndex, child4 );
}
QTreeWidgetItem MainWindow::addChild(QTreeWidgetItem *parent,QString name ,QString description)
{
QTreeWidgetItem *itm = new QTreeWidgetItem();
itm->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled );
itm->setText(0,name);
itm->setText(1,description);
addChild2(itm,"sub-one","subchild2");
addChild2(itm,"sub-two","subchild2");
addChild2(itm,"sub-tree","subchild2");
parent->addChild(itm);
return itm;
}
void MainWindow::addChild2(QTreeWidgetItem *parent,QString name ,QString description)
{
QTreeWidgetItem *itm = new QTreeWidgetItem();
itm->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsEditable);
itm->setText(0,name);
itm->setText(1,description);
itm->setText(2,"test third coloumn");
parent->addChild(itm);
}
.....
现在我有一个指向其中一个辣椒的指针。 (让我们第 1 级的 sa)我想用另一个替换它。例如,我想用子“4”替换子“2”,但我希望将它放在 f child 2 的位置。
【问题讨论】:
-
已修复。这是一个错字...谢谢
标签: qt replace qtreewidget