【qt】QTreeWidget 树形组件2

简介: 【qt】QTreeWidget 树形组件

【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树形组件,类似于文件的样式,主要是注意初始化的时候,添加的是那个目录。

人的一切痛苦,本质上都是对自己无能的愤怒。

相关文章
|
26天前
【qt】QTableWidget 表格组件3
【qt】QTableWidget 表格组件
18 0
|
26天前
【qt】QTableWidget 表格组件2
【qt】QTableWidget 表格组件
23 0
|
26天前
【qt】QTableWidget 表格组件1
【qt】QTableWidget 表格组件
14 0
|
26天前
|
C++
【qt】QTreeWidget 树形组件1
【qt】QTreeWidget 树形组件
25 0
|
1月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
43 0
|
5天前
|
关系型数据库 MySQL 项目管理
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
|
5天前
|
SQL 关系型数据库 MySQL
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
|
5天前
|
SQL 数据可视化 关系型数据库
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计
|
5天前
|
安全 BI 数据库
数据库大作业——基于qt开发的图书管理系统 (一)环境的配置与项目需求的分析
数据库大作业——基于qt开发的图书管理系统 (一)环境的配置与项目需求的分析
|
1月前
|
区块链
【qt】最快的开发界面效率——混合编程3
【qt】最快的开发界面效率——混合编程
41 1