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

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

相关文章
|
2月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
75 2
|
2月前
|
编解码 开发框架
【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
140 3
|
4月前
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
|
5月前
【qt】QTableWidget 表格组件3
【qt】QTableWidget 表格组件
38 0
|
5月前
【qt】QTableWidget 表格组件2
【qt】QTableWidget 表格组件
53 0
|
5月前
【qt】QTableWidget 表格组件1
【qt】QTableWidget 表格组件
40 0
|
3月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
146 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
2月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
50 0
|
6天前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
1月前