【qt】QTreeWidget 树形组件1:https://developer.aliyun.com/article/1523049
四.插入目录
1.获取当前选中目录项
auto item=ui->treeWidget->currentItem();//获取当前选中项
2.子目录插入
只能通过父目录来插入
item->parent()->insertChild(ui->treeWidget->currentIndex().row(),newItem);
3.根目录插入
QIcon icon; icon.addFile(":/image/file.png"); newItem->setIcon(0,icon); ui->treeWidget->insertTopLevelItem(ui->treeWidget->currentIndex().row(),newItem);
4.获取当前索引的行号
ui->treeWidget->currentIndex().row()
5.插入功能
auto item=ui->treeWidget->currentItem();//获取当前选中项 if(item&&item->isSelected()) { QTreeWidgetItem *newItem=new QTreeWidgetItem(); newItem->setText(0,"未命名"); newItem->setText(1,"未命名"); auto parent=item->parent();//根目录是会返回空的 if(parent)//子目录 { item->parent()->insertChild(ui->treeWidget->currentIndex().row(),newItem); } else//根目录 { QIcon icon; icon.addFile(":/image/file.png"); newItem->setIcon(0,icon); ui->treeWidget->insertTopLevelItem(ui->treeWidget->currentIndex().row(),newItem); } }
运行结果:
但是我们的未命名不能进行编辑,这怎么能行,我们姚来设置属性
newItem->setFlags(Qt::ItemIsEditable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
这就可以编辑了
五.删除目录
1.设置选择目录形式
现在有个问题,我们只能选择一项,不能像windows的文件一样按ctrl就可以选择多项,但是我们可以设置选择模式
现在按住ctrl就可以选择多个
2.获取当前所有选择的目录
auto items=ui->treeWidget->selectedItems();
3.删除子目录
只能通过父目录来删
int index=parent->indexOfChild(item); parent->takeChild(index);
4.删除根目录
通过treeWidget来删
int index=ui->treeWidget->indexOfTopLevelItem(item); ui->treeWidget->takeTopLevelItem(index);
5.删除功能
void MainWindow::on_actionDel_triggered() { auto items=ui->treeWidget->selectedItems(); for(auto it=items.constBegin();it!=items.end();it++) { auto item=*it; auto parent=item->parent();//根目录是会返回空的 if(parent)//子目录 { int index=parent->indexOfChild(item); parent->takeChild(index); } else//根目录 { int index=ui->treeWidget->indexOfTopLevelItem(item); ui->treeWidget->takeTopLevelItem(index); } } }
运行结果:
六.文本编辑器显示
1.对TreeWidget转到槽
选择这个信号:
2.功能实现
void MainWindow::on_treeWidget_itemSelectionChanged() { auto items=ui->treeWidget->selectedItems();//获取所有选择的目录,返回的是列表 for(auto it=items.constBegin();it!=items.end();it++) { ui->textEdit->append("已选"+(*it)->text(0)+","+(*it)->text(1)); } }
运行结果:
七.总结一下
QTreeWidget树形组件,类似于文件的样式,主要是注意初始化的时候,添加的是那个目录。
人的一切痛苦,本质上都是对自己无能的愤怒。