2012-10-18 80 views
3

我正在试图以我可以在其中插入元素的方式构建树。这是我在起步阶段树:QTreeWdiget在特定位置添加子元素

+Project 
+--Version 1.0 
+--Version 2.0 

现在,让我们假设我做了一个1.1版本,我想它的位置添加beetween Version 1.0Version 2.0。像:

+Project 
+--Version 1.0 
+--Version 1.1 
+--Version 2.0 

我曾尝试使用insertChild(http://doc.qt.digia.com/4.7-snapshot/qtreewidgetitem.html#insertChild)来添加,但该项目并没有在树中获得创建。这是代码:

void VersionGuiElements::createGuiElements(QTreeWidgetItem* projectItem, int idxAfter) 
{ 
    QTreeWidgetItem* versionItem = new QTreeWidgetItem(0, QStringList(QString("Version ") + m_version->getVersionText())) ; 

    if(idxAfter == -1) 
    { 
     projectItem->addChild(versionItem); 
    } 
    else 
    { 
     projectItem->insertChild(idxAfter, versionItem); 
    } 
} 

但没有东西插入树中...任何想法我在做什么错了?

回答

1

当你创建你应该指出的树节点的父:

QTreeWidgetItem* versionItem = new QTreeWidgetItem(projectItem, QStringList(QString("Version ") + m_version->getVersionText())) ; 

然后:

if(idxAfter == -1) 
{ 
    projectItem->addChild(versionItem); 
} 
else 
{ 
    projectItem->insertChild(idxAfter, versionItem); 
} 
+0

我已经尝试过了,还是一样的结果。该项目没有被添加到树:( – fritzone

+0

AddChild()工作吗? – Al2O3

+0

奇怪的不是,虽然它应该。 – fritzone