QT中treeWidget组件动态添加节点,删除节点,

这篇具有很好参考价值的文章主要介绍了QT中treeWidget组件动态添加节点,删除节点,。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 内容简介

QT中treeWidget组件动态添加节点,删除节点,

二. 软件环境

2.1QT 5.14.1

新版QT6.4,,6.5在线安装经常失败,而5.9版本又无法编译64位程序,所以就采用5.14.1这个用的比较多也比较稳定的一个版本。

QT编译器采用的是MSVC2017 64bit。

链接:https://pan.baidu.com/s/1ER98DPAkTUPlIyCC6osNNQ?pwd=1234

2.3 Visual studio 2017

Visual stdio采用2017主要是因为QT5.14.1最高到MSVC2017 64bit。

三. 主要流程

3.1 选择tree中的节点

3.2 动态添加节点

3.3 动态删除节点

四. 具体步骤

4.1 选择tree中的节点

这是我的目录结构
QT中treeWidget组件动态添加节点,删除节点,
添加节点的话,要有父节点,所以要寻找目录的节点

    QTreeWidgetItem *root;
    // 这个显示的位置是Results这个位置,从0开始数的,在同一级数,也就是第三个
    root = ui->treeWidget->topLevelItem(2);
    QTreeWidgetItem *one_1;
    // 这块这个对应的就是漆膜厚度这个,和上一个方法一样,
    one_1 = root->child(0);

4.2 动态添加节点

先是添加节点,

    QTreeWidgetItem *root;
    // 这个显示的位置是Results这个位置,从0开始数的,在同一级数,也就是第三个
    root = ui->treeWidget->topLevelItem(2);
    QTreeWidgetItem *one_1;
    // 这块这个对应的就是漆膜厚度这个,和上一个方法一样,
    one_1 = root->child(0);
	
	// 就在这个one_1下添加子节点把
    QTreeWidgetItem *one_1_1=new QTreeWidgetItem();
    // 然后添加即可,将one_1作为父节点
    one_1->addChild(one_1_1);

不确定添加个数时候,就有些麻烦了,

// 我一开始打算这么写,但是没法给节点设定名字,找文档也没解决办法,我不清楚这个能不能实现,然后采用另外一个办法
for(int i=0;i++;i<10){
	one_1->addChild(new QTreeWidgetItem());
}

这是我的办法,我写了一个函数

// 这个note是父节点,ss这个是要创建节点的名字
void MainWindow::addnote(QTreeWidgetItem *note, QString ss)
{
    QTreeWidgetItem *item= new QTreeWidgetItem;
    //这个是图标,按自己需求添加即可
    // item->setIcon(0, QIcon(":/new/prefix1/image/begintesting.png"));
    item->setText(0,QString("%1").arg(ss));
    note->addChild(item);
}
// 调用,就添加完成了
    addnote(one_1,"1");

4.3 动态删除节点

这个就比较简单了,

	// 这是要删除one_1下边的节点,
    int count = one_1->childCount();
    for(int i=0; i<count; i++)
    {	
    	// 这个里面的0没有问题,删除一个后,后边的会补上的
        QTreeWidgetItem *childItem = one_1->child(0);
        delete childItem;
    }

4.4 treeWidget树节点实现tabWidget页面路由

要实现treeWidget节点页面路由,先给treeWidget添加点击事件on_treeWidget_currentItemChanged,先放代码
切换哪一页直接填数字

ui->tabWidget->setCurrentIndex(0);
    Q_UNUSED(previous);
    if(current==NULL) {
        return;
    }
    QTreeWidgetItem *root;
    root = ui->treeWidget->topLevelItem(2);
    QTreeWidgetItem *one_1;
    QTreeWidgetItem *one_1_1;
    // 气膜厚度
    one_1 = root->child(0);
    int countt = one_1->childCount();
    int a = 2;
    one_1_1 = one_1->child(a);
    QTreeWidgetItem *one_2;
    // 箔片变形量
    one_2 = root->child(1);
    QTreeWidgetItem *one_3;
    // 压力
    one_3 = root->child(2);
    QTreeWidgetItem *one_4;
    // 承载力
    one_4 = root->child(3);
    QTreeWidgetItem *one_5;
        // 偏位角
    one_5 = root->child(4);
    QString pageName = current->text(0);
    if(pageName == "Setup"){
        // ui->bottom_console->appendPlainText("切换到页面0");
        ui->tabWidget->setCurrentIndex(0);
    }
    if(pageName == "基本参数"){
        // ui->bottom_console->appendPlainText("切换到页面1");
        ui->tabWidget->setCurrentIndex(1);
    }
    if(pageName == "可变参数"){
        // ui->bottom_console->appendPlainText("切换到页面2");
        ui->tabWidget->setCurrentIndex(2);
    }
    if(pageName == "箔片参数"){
        // ui->bottom_console->appendPlainText("切换到页面3");
        ui->tabWidget->setCurrentIndex(3);
    }
    if(pageName == "Solution"){
        // ui->bottom_console->appendPlainText("切换到页面4");
        ui->tabWidget->setCurrentIndex(4);
    }
    if(pageName == "Results"){
        // ui->bottom_console->appendPlainText("切换到页面5");
        ui->tabWidget->setCurrentIndex(5);
    }
    if(pageName == "承载力"){
        // ui->bottom_console->appendPlainText("切换到页面6");
        ui->tabWidget->setCurrentIndex(6);
    }
    if(pageName == "偏位角"){
        // ui->bottom_console->appendPlainText("切换到页面7");
        ui->tabWidget->setCurrentIndex(7);
    }

就先从current参数中拿到点击节点的信息,来进行名字匹配,实现页面路由,

4.5 treeWidget树节点实现tabWidget动态页面路由

动态路由的话,就我们不知道节点的名字,也没法用名字进行匹配,代码和上边是连着的,current代表当前点击的节点,和树节点进行匹配,匹配到了就条状文章来源地址https://www.toymoban.com/news/detail-450404.html

    for (int i=0;i<countt;i++) {
        if(current == one_1->child(i)){
             ui->bottom_console->appendPlainText(one_1->child(i)->text(0).toStdString().data());
            queryParam(inputParameters[i],1);
            qDebug()<<"查询成功";
//            imageDisplay(queryparam,1);
        }
        if(current == one_2->child(i)){
            ui->bottom_console->appendPlainText(one_1->child(i)->text(0).toStdString().data());
            queryParam(inputParameters[i],2);
//            queryParameters queryparam;
//            queryParam(inputParameters[i],queryparam);
//            imageDisplay(queryparam,2);
        }
        if(current == one_3->child(i)){
            queryParam(inputParameters[i],3);
//            queryParameters queryparam;
//            queryParam(inputParameters[i],queryparam);
//            imageDisplay(queryparam,3);
        }
    }

五. 参考

QTreeWidget 删除节点 和 遍历节点

到了这里,关于QT中treeWidget组件动态添加节点,删除节点,的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux部署Redis Cluster高可用集群(附带集群节点添加删除以及槽位分配操作详解)

    Redis Cluster 集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,需要将每个节点设置成集群模式,

    2024年02月07日
    浏览(47)
  • QT动态生成控件与删除动态控件

    目录 一、结果展示 二、删除动态控件方法 三、工程代码 1.工程文件 2.文件代码 如下图所示,点击左侧按钮时,删除原有的3组控件,并生成6组控件;点击右侧按钮时,删除原有的6组控件,并生成3组控件。 图1-1 动态生成和删除控件 工程文件如下图所示  图3-1 工程文件 界面

    2024年02月12日
    浏览(72)
  • [Vue篇]vue动态添加行/删除行

    vue动态添加行 页面效果 代码: data部分 methods部分 点击相应的添加后,每个 el-table 增加一行 代码: 注意: 若缺依赖,安装相应依赖。

    2024年02月09日
    浏览(37)
  • vue~封装一个文本框添加与删除的组件

    这是一个div,包含了两个文本框,后面是添加和删除按钮 添加按钮复制出新的div,除了文本框没有内容,其它都上面一样 删除按钮将当前行div删除 提交之后,将出现当前你添加的这个列表的对象,对接后端接口,将这个数组POST到后端即可,如图所示:

    2024年02月08日
    浏览(37)
  • Android——viewpage2+tablayout+fragment动态添加删除

    一、简介: 1、添加和删除按钮可动态添加删减tab页面 2、获取每个fragment数据页上的数据 3、为每个数据页赋值 二、 效果图: 三、实现: 主要功能实现:( ViewPage2Fragment.java ) 先初始化适配器 frament数据页(ViewPage2DataFragment.java) 适配器(FragmentStateViewPager2Adapter.java) 主布

    2024年02月16日
    浏览(40)
  • 【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介

    觉得有帮助请点赞关注收藏~~~ 创建3D对象 选择GameObject -3D Object命令 选择要创建的3D对象 下面是各个对象的意思 cube 立方体 sphere 圆柱体 capsule 平面 cylinder 胶囊体 plane 球体 quad 面片  可以为上面创建的对象添加刚体组件 选中该对象 在Inspector视图中,单机add component按钮, 选在

    2024年02月04日
    浏览(48)
  • React动态添加标签组件

    在前端开发的过程中,一些表单的输入经常需要输入多个内容,如果采用一个输入框+逗号分隔的方式,展示起来不是很清晰,一般需要采用标签的方式 可以指定空状态时的 标题 设置标签 颜色 每个标签的 最大长度 (字符数) 接口传递的时候的 分隔标记 (是用逗号,还是其他) 直接

    2024年02月10日
    浏览(39)
  • 【QT】pro文件里添加又删除LIBS不影响运行的原因

    我发现个问题啊,如果运行项目,发现报错,缺少某dll,接着你在pro文件里加上win32:LIBS += -lOpengl32(举个例子),接着可以运行了,接着把这行删掉,再运行,仍然可以,后续是不影响的。 但是当你把build文件夹删掉的时候,再次运行,就会出现同样的错误,gpt说是因为mak

    2024年04月14日
    浏览(44)
  • vue给components动态添加组件

    在Vue中,可以使用 v-bind 指令来动态地将组件添加到其他组件上。 首先,需要定义一个包含所有可能的子组件的数组或对象。然后,通过计算属性(computed property)根据条件选择要显示的组件。最后,使用 component 元素并结合 is 特性来动态地切换不同的组件。 这样就可以根据

    2024年01月24日
    浏览(42)
  • 【JS】js给对象动态添加、设置、删除属性名和属性值

    js中访问对象属性一共有两种方法:点获取法和方括号获取法。 使用点符号访问属性值 alert( user.name ); // John 使用方括号访问属性值 alert( user[name]); // John 注意: 如果我们遍历一个对象,我们获取属性的顺序是和属性添加时的顺序相同吗? 简短的回答是:“有特别的顺序”:整

    2023年04月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包