qt QTreeView的简单使用(多级子节点)

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    setWindowTitle("QTreeView的简单使用");

    model = new QStandardItemModel;
    model->setHorizontalHeaderLabels(QStringList() << "left" << "right");

    ui->treeView->setModel(model);
    ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch);
    ui->treeView->header()->setDefaultAlignment(Qt::AlignHCenter);

    connect(ui->treeView, &QTreeView::clicked, this, &MainWindow::clicked);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    int index = model->rowCount();
    QList<QStandardItem *> topList;
    //链表容器添加顶级节点
    topList << new QStandardItem(QString("顶级节点:%1-left").arg(index + 1))
            << new QStandardItem(QString("顶级节点:%1-right").arg(index + 1));


    topList[0]->setData(-1, Qt::UserRole + 1); //设置父节点行,当值为-1时则当前为顶级节点
    topList[1]->setData(-1, Qt::UserRole + 1);
    //添加顶级节点
    model->appendRow(topList);
}


void MainWindow::on_pushButton_2_clicked()
{
    //获取当前行列
    QModelIndex curIndex = ui->treeView->currentIndex();
    int row = curIndex.row();
    int column = curIndex.column();
    int parentRow = curIndex.data(Qt::UserRole + 1).toInt();

    //当前行列值包含-1值或当前节点非顶级节点时返回
    if( -1 == row || -1 == column)
    {
        return;
    }


    QStandardItem *item = model->itemFromIndex(curIndex);

    QList<QStandardItem *> childList;
    childList << new QStandardItem(QString("子节点:%1-left").arg(item->rowCount()))
              << new QStandardItem(QString("子节点:%1-right").arg(item->rowCount()));
    //设置item的data
    childList[0]->setData(row, Qt::UserRole + 1);
    childList[1]->setData(row, Qt::UserRole + 1);
    //添加子节点
    item->appendRow(childList);
}


void MainWindow::on_pushButton_3_clicked()
{
    //获取当前行列
    QModelIndex curIndex = ui->treeView->currentIndex();
    int row = curIndex.row();
    int column = curIndex.column();

    //当前行列值包含-1值或当前节点非顶级节点时返回
    if( -1 == row || -1 == column)
    {
        return;
    }

    QStandardItem *item = model->itemFromIndex(curIndex);
    if(item)
    {
        QStandardItem *parentItem = item->parent();
        if(parentItem)
            parentItem->removeRow(row);
        else
            model->removeRow(row);
    }
}

void MainWindow::clicked()
{
    //获取当前行列
    QModelIndex curIndex = ui->treeView->currentIndex();
    int row = curIndex.row();
    int column = curIndex.column();

    //当前位置包含-1值返回
    if( -1 == row || -1 == column)
    {
        return;
    }

    ui->statusbar->showMessage(curIndex.data().toString());
}

DEMO下载:点击跳转

运行效果如下:

觉得有帮助的话,打赏一下呗。。

           

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/771319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

元宇宙虚拟实景展馆树立客户对企业的信任和好感

在数字化浪潮的推动下&#xff0c;企业迎来了前所未有的营销新机遇——3D数字展厅。3D数字展厅作为现代营销中的新型工具&#xff0c;不仅是企业与客户互动、传递信息的桥梁&#xff0c;更是企业展示实力、彰显品牌魅力的舞台。 辽宁3D数字展厅制作以其独特的设计理念和先进的制…

航空数据管控系统-①项目准备阶段:任务1:项目需求描述

任务描述 从用户的角度阐述项目的开发背景、使用范围及功能需求&#xff0c;从而指导学生独立完成项目的设计与开发。 任务指导 目录 标题 内容 备注 1. 项目概述 1.1 项目背景介绍 &#xff08;1&#xff09;说明产品是什么&#xff0c;什么用途 &#xff08;2&#xff…

豆包Marscode体验官,体验云编程和AI助手加持的快乐

我正在参加「豆包MarsCode初体验」征文活动&#xff0c;活动链接&#xff1a;https://juejin.cn/post/7384997062416252939?utm_sourcejuejin&utm_mediumpush&utm_campaigntiyanguan Marscode官网地址&#xff1a;工作台 - MarsCode 其实早在前不久&#xff0c;我就…

基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 针对永磁同步电机调速系统的响应性能和抗干扰能力问题&#xff0c;本文做了四个仿真&#xff0c;分别为&#xff1a;永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最…

注意!高考志愿填报的两个优先原则,千万不要错过!

高考已经告一段落&#xff0c;接下来几天各省会陆续公布分数&#xff0c;然后就到了填报志愿的环节。高考志愿填报是一项影响深远的综合性决策&#xff0c;决定着每个考生的未来发展 。下面我谈谈我对高考填报的理解。我总结为&#xff1a;两个优先、三个因素。 一、两个优先 …

【Unity navigation面板】

【Unity navigation面板】 Unity的Navigation面板是一个集成在Unity编辑器中的界面&#xff0c;它允许开发者对导航网格&#xff08;NavMesh&#xff09;进行配置和管理。 Unity Navigation面板的一些关键特性和功能&#xff1a; 导航网格代理&#xff08;NavMesh Agent&…

基于字符和词特征融合的恶意域名检测

传统的恶意域名检测方法在检测由域名生成算法&#xff08;DGA&#xff09;随机生成的恶意域名方面性能不佳&#xff0c;尤其是对于那些由随机单词组成的域名。文章提出了一种新的检测算法&#xff0c;通过融合字符和词特征来提高对恶意域名的检测能力&#xff0c;特别是对于更具…

接私活儿神器,一款功能强大的 SaaS 快速开发平台

今天&#xff0c;推荐一个微服务 SaaS 快速开发平台系统项目&#xff0c;笔者第一次使用就有点上头&#xff0c;爱不释手&#xff0c;必须要推荐给大家。 这是我目前见过最好的微服务 SaaS 快速开发平台系统项目。功能完整&#xff0c;代码结构清晰。值得推荐。 项目介绍 本…

AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理

AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理 目录 AGI 之 【Hugging Face】 的【Transformer】的 [ 解码器 ] / [ 认识 Transformer ]的简单整理 一、简单介绍 二、Transformer 三、解码器 四、认识Transformer 1、Transf…

MySQL 9.0 GA 来了!

2024 年 7 月 2 日&#xff0c;MySQL 9.0 GA 版本正式发布。还记得 MySQL 8.0 版本正式发布于 2018 年 4 月 19 日&#xff0c;中间经过了 6 年之久&#xff0c;MySQL 官方终于发布了大版本号变更得 9.0 版本&#xff0c;接下来由我给大家介绍 MySQL 在 9.0 版本中有哪些新的变…

AI与测试相辅相成

AI助力软件测试 1.AI赋能软件测试 使用AI工具来帮助测试人员提高测试效率&#xff0c;提供缺陷分析和缺陷预测。 语法格式 设定角色 具体指示 上下文格式 例: 角色&#xff1a;你是一个测试人员 内容&#xff1a;请帮我生成登录案例的测试用例 ​ 1.只有输入正确账号和密码才…

【持续更新】vs 编译过程中的问题及其解决方案

独立寒秋&#xff0c;湘江北去&#xff0c;橘子洲头。 目录 问题 1 &#xff1a; 无法查看或者打开 PDB 文件。 问题 2 &#xff1a; 命令提示符中查看运行结果&#xff0c;控制台闪退。 问题 3 &#xff1a; 某功能的判断条件&#xff1a;int val > 1e9&#xff0c;逻辑…

Unity In App Purchasing内购校验

1&#xff0c;利用收据验证混淆器 把后台的key填进去&#xff0c;点击自动生成一些文件 2&#xff0c;代码过滤 using UnityEngine.Purchasing.Security;在IAPManager.cs的 public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)增加 #if !UNITY_EDITOR…

字节码编程ASM之生成变量并sout

写在前面 本文看下如何通过asm生成变量并sout。 1&#xff1a;代码 直接看代码吧&#xff0c;注释很详细&#xff0c;有不懂的&#xff0c;留言告诉我&#xff1a; package com.dahuyuo.asmtest;import org.objectweb.asm.*; import org.objectweb.asm.commons.AdviceAdapt…

2024亚太赛(中文赛)数学建模竞赛选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;B<C<A&#xff0c;开放度&#xff1a;C<A<B。 综合评价来看 A题适合有较强计算几何和优化能力的团队&#xff0c;难度较高&#xff0c;但适用面较窄。 B题数据处理和分析为主&#xff0c;适合数据科学背景的团队…

miniprogram-to-uniapp-微信小程序转换成uniapp项目

文章目录 参考:miniprogram-to-uniapp使用指南第一步第二步第三步第四步【miniprogram-to-uniapp】转换微信小程序”项目为uni-app项目(新版本工具已经支持各种小程序转换) 参考: 小程序技能树 uni-app基础知识总结 miniprogram-to-uniapp使用指南 第一步 win + R 输入…

网络问题排查问题记录

一、问题描述 1.1 问题产生记录 准生产环境报出如下错误&#xff1a;连接某个服务器的时候出现连接超时现象&#xff1b;服务间调用是通过feignnacos实现的&#xff1b;服务部署是用k8s实现的&#xff1b;初步判断是A->B调用是服务端出了初五 二、问题定位 2.1 问题排查记录…

Maven:下载配置教学(2024版 最简)

文章目录 一、Maven下载1.1 下载官网1.2 下载压缩包1.3 解压1.4 创建repo文件夹 二、Maven配置2.1 环境变量2.1.1 新建系统变量2.1.2 添加Path 2.2 阿里云镜像2.3 JDK2.4 本地仓库2.5 conf文件的全部内容2.6 测试安装配置是否成功 三、IDEA中配置Maven3.1 新配置3.2 推荐配置 四…

实验一 MATLAB \ Python数字图像处理初步

一、实验目的&#xff1a; 1&#xff0e;熟悉及掌握在MATLAB\Python中能够处理哪些格式图像。 2&#xff0e;熟练掌握在MATLAB\Python中如何读取图像。 3&#xff0e;掌握如何利用MATLAB\Python来获取图像的大小、颜色、高度、宽度等等相关信息。 4&#xff0e;掌握如何在M…