QTreeWidget在特定位置添加子元素

时间:2012-10-18 08:10:04

标签: c++ qt qtreewidget qtreewidgetitem

我正在尝试以一种可以在我想要的位置插入元素的方式构建树。这是我的树在初始阶段:

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

现在,让我们假设我制作了一个版本1.1,我想将它添加到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 个答案:

答案 0 :(得分:1)

您应该在创建树节点的父节点时指出它:

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

然后:

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