qt - QTreeWidget takeChild() - Qt
问题描述
我有一个 treeWidget,我需要在其中删除 QTreeWidgetItem 的子元素。
QTreeWidgetItem *listing = new (ui->treeWidget);
AddChild(listing,id);
AddChild(listing,id);`// this is what i need to delete
AddChild(listing,id);
listing->takeChild(1);
我试过 func takeChild(int index) 但什么也没发生
void AddChild(QTreeWidget *s,int id)
{
QTreeWidgetItem *_s = new QTreeWidgetItem(ui->treeWidget);
_s->setText(0,QString::number(id));
s->addChild(_s);
}
解决方案
你的代码有错误,
QTreeWidgetItem *listing = new (ui->treeWidget);
应该:
QTreeWidgetItem *listing = new QTreeWidgetItem(ui->treeWidget);
并且函数的签名AddChild()
是错误的:
void AddChild(QTreeWidget *s,int id)
应该:
AddChild(QTreeWidgetItem *s,int id)
现在主要问题为什么takeChild()
对您不起作用,是您没有将项目作为子项添加到listing
,而是将它们添加到treeWidget
,因此在您的 中AddChild()
,您应该将父项设置为S
is listing
,因此您的代码应该是:
QTreeWidgetItem *listing = new QTreeWidgetItem(ui->treeWidget);
listing->setText(0, tr("Listing"));
AddChild(listing,0);
AddChild(listing,1); // this is what i need to delete
AddChild(listing,2);
listing->takeChild(1);
和函数 AddChild()
void AddChild(QTreeWidgetItem *s,int id)
{
QTreeWidgetItem *_s = new QTreeWidgetItem(s);
_s->setText(0,QString::number(id));
s->addChild(_s);
}
推荐阅读
- json - nlohmann/json 框架中的未知断点
- python - 如何使用 Xlwings 向 Excel 中的单元格添加注释
- python-3.x - Python遍历布尔变量的所有可能组合
- ios - leveldb 语义错误,不断接收来自 podfiles 的错误
- python - 如何解决自动加载一对一列时超出最大递归深度的问题
- java - 我可以通过 java 反编译工具反编译任何用 C# 或任何其他语言编写的游戏吗?
- express - 我应该如何处理 nuxt cookie 过期和工作流程?
- ios - 如何为 UIView 添加圆角半径
- maven - HTTP/1.1 401 Unauthorized to upload my module kotlin to jcenter using bintray
- python - 如何用两个arfument函数实现装饰器