• 5422阅读
  • 5回复

[提问]关于TreeWidget,插入一个item [复制链接]

上一主题 下一主题
离线noreen_yue
 
只看楼主 正序阅读 楼主  发表于: 2012-06-01
QList<QTreeWidgetItem*> lstItem = m_pTree->selectedItems();
QTreeWidgetItem* currItem = lstItem.first();
QTreeWidgetItem* parentItem = currItem->parent();
int nIdex = 0;
if (parentItem)   //此处判断其父类存在,即currItem不是tree的topItem
{
  QTreeWidgetItem *childItem = new QTreeWidgetItem(parentItem,QStringList(QString("itemInsert")));
  nIdex = parentItem->indexOfChild(currItem);  
  parentItem->insertChild(nIdex+1, childItem);
}
else          //else ,如果是topItem则是tree,insertTopItem
{
  QTreeWidgetItem *childItem = new QTreeWidgetItem(m_pTree,QStringList(QString("itemInsert")));
  nIdex = m_pTree->indexOfTopLevelItem(currItem);
  m_pTree->insertTopLevelItem(nIdex+1, childItem);
}

问题:不能正常insert,nIndex的返回值是正确的,但是insert每次都插在父节点的最后
如果是else里面的代码,当new一个item的时候,parent不写成tree,而写成parentItem,则显示正确。这是怎么回事啊。
离线noreen_yue
只看该作者 5楼 发表于: 2012-06-01
回 4楼(uidab) 的帖子
确实是,我大意了,非常感谢!
离线uidab

只看该作者 4楼 发表于: 2012-06-01
回 3楼(noreen_yue) 的帖子
不加这个参数就行,QTreeWidgetItem默认的构造函数里有这样用的。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线noreen_yue
只看该作者 3楼 发表于: 2012-06-01
回 2楼(uidab) 的帖子
嗯嗯 我把m_pTree改为Null就对了。 谢谢
离线uidab

只看该作者 2楼 发表于: 2012-06-01
回 1楼(noreen_yue) 的帖子
可能是这句的问题
QTreeWidgetItem *childItem = new QTreeWidgetItem(m_pTree,QStringList(QString("itemInsert")));
把m_pTree去掉。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线noreen_yue
只看该作者 1楼 发表于: 2012-06-01
好了解决了,在创建的时候确定了位置

可是还是不明白,那还要insert函数 做什么
快速回复
限100 字节
 
上一个 下一个