【QT】多层QTreeWidget与QStackedWidget的关联操作

通过点击多层QTreeWidget来控制QStackedWidget中的page页面切换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. treeWidget设计
    在这里插入图片描述
    在这里插入图片描述

treeWidget设计:

    // treeWidget设计
    ui->treeWidget->clear();
    ui->treeWidget->setColumnCount(1);
    //第一层
    QStringList l;
    l<<"管理系统";
    QTreeWidgetItem *pf = new QTreeWidgetItem(ui->treeWidget,l);
    ui->treeWidget->addTopLevelItem(pf);

    //第二层
    l.clear();
    l<<"学生管理";
    QTreeWidgetItem *p1 = new QTreeWidgetItem(pf,l);
    l.clear();
    l<<"管理员管理";
    QTreeWidgetItem *p2= new QTreeWidgetItem(pf,l);
    pf->addChild(p1);
    pf->addChild(p2);


    //第三层
    l.clear();
    l<<"学校学生信息管理";
    QTreeWidgetItem *pi = new QTreeWidgetItem(p1,l);
    l.clear();
    l<<"学校学生成绩管理";
    QTreeWidgetItem *ps = new QTreeWidgetItem(p1,l);
    p1->addChild(pi);
    p1->addChild(ps);

    //第四层
    l.clear();
    l<<"2020级";
    QTreeWidgetItem *p20 = new QTreeWidgetItem(ps,l);
    l.clear();
    l<<"2021级";
    QTreeWidgetItem *p21 = new QTreeWidgetItem(ps,l);
    l.clear();
    l<<"2022级";
    QTreeWidgetItem *p22 = new QTreeWidgetItem(ps,l);
    l.clear();
    l<<"2023级";
    QTreeWidgetItem *p23 = new QTreeWidgetItem(ps,l);
    //父          子
    ps->addChild(p20);
    ps->addChild(p21);
    ps->addChild(p22);
    ps->addChild(p23);

    //第五层
    l.clear();
    l<<"自动化专业";
    QTreeWidgetItem *p201 = new QTreeWidgetItem(p20,l);
    l.clear();
    l<<"智能科学与技术专业";
    QTreeWidgetItem *p202 = new QTreeWidgetItem(p20,l);
    //父          子
    p20->addChild(p201);
    p20->addChild(p202);

    l.clear();
    l<<"自动化专业";
    QTreeWidgetItem *p211 = new QTreeWidgetItem(p21,l);
    l.clear();
    l<<"智能科学与技术专业";
    QTreeWidgetItem *p212 = new QTreeWidgetItem(p21,l);
    //父          子
    p21->addChild(p211);
    p21->addChild(p212);

    l.clear();
    l<<"自动化专业";
    QTreeWidgetItem *p221 = new QTreeWidgetItem(p22,l);
    l.clear();
    l<<"智能科学与技术专业";
    QTreeWidgetItem *p222 = new QTreeWidgetItem(p22,l);
    //父          子
    p22->addChild(p221);
    p22->addChild(p222);

    l.clear();
    l<<"自动化专业";
    QTreeWidgetItem *p231 = new QTreeWidgetItem(p23,l);
    l.clear();
    l<<"智能科学与技术专业";
    QTreeWidgetItem *p232 = new QTreeWidgetItem(p23,l);
    //父          子
    p23->addChild(p231);
    p23->addChild(p232);


    //第六层
    //20-自动化
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2011 = new QTreeWidgetItem(p201,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2012 = new QTreeWidgetItem(p201,l);
    l.clear();
    l<<"3班";
    QTreeWidgetItem *p2013 = new QTreeWidgetItem(p201,l);
    //父          子
    p201->addChild(p2011);
    p201->addChild(p2012);
    p201->addChild(p2013);

    //20-智科
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2021 = new QTreeWidgetItem(p202,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2022 = new QTreeWidgetItem(p202,l);
    //父          子
    p202->addChild(p2021);
    p202->addChild(p2022);


    //21-自动化
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2111 = new QTreeWidgetItem(p211,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2112 = new QTreeWidgetItem(p211,l);
    l.clear();
    l<<"3班";
    QTreeWidgetItem *p2113 = new QTreeWidgetItem(p211,l);
    //父          子
    p211->addChild(p2111);
    p211->addChild(p2112);
    p211->addChild(p2113);

    //21-智科
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2121 = new QTreeWidgetItem(p212,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2122 = new QTreeWidgetItem(p212,l);
    //父          子
    p212->addChild(p2121);
    p212->addChild(p2122);


    //22-自动化
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2211 = new QTreeWidgetItem(p221,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2212 = new QTreeWidgetItem(p221,l);
    l.clear();
    l<<"3班";
    QTreeWidgetItem *p2213 = new QTreeWidgetItem(p221,l);
    //父          子
    p221->addChild(p2211);
    p221->addChild(p2212);
    p221->addChild(p2213);

    //20-智科
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2221 = new QTreeWidgetItem(p222,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2222 = new QTreeWidgetItem(p222,l);
    //父          子
    p222->addChild(p2221);
    p222->addChild(p2222);


    //23-自动化
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2311 = new QTreeWidgetItem(p231,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2312 = new QTreeWidgetItem(p231,l);
    l.clear();
    l<<"3班";
    QTreeWidgetItem *p2313 = new QTreeWidgetItem(p231,l);
    //父          子
    p231->addChild(p2311);
    p231->addChild(p2312);
    p231->addChild(p2313);

    //20-智科
    l.clear();
    l<<"1班";
    QTreeWidgetItem *p2321 = new QTreeWidgetItem(p232,l);
    l.clear();
    l<<"2班";
    QTreeWidgetItem *p2322 = new QTreeWidgetItem(p232,l);
    //父          子
    p232->addChild(p2321);
    p232->addChild(p2322);
    ui->treeWidget->expandAll();
  1. 关联
    在这里插入图片描述
    在这里插入图片描述
    选择on_treeWidget_itemClicked()函数
    重点是使用setCurrentWidget()和 判断语句
item->text(column) == "3班" 
&& item->parent() && item->parent()->text(column) == "自动化专业" 
&& item->parent()->parent() &&      item->parent()->parent()->text(column) == "2020级"

完整语句:

void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
    // 获取当前点击的项的文本
    // QString clickedItemText = item->text(column);

    // 根据点击的项进行处理
    if(item->text(column)=="学校学生信息管理")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_StuInfo);
    }
    else if(item->text(column)=="学校学生成绩管理")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_score);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2020级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2020级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "3班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2020级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2020级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2020级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2021级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2021级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "3班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2021级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2021级")
    {

        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2021级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2022级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2022级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "3班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2022级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2022级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2022级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2023级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2023级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "3班" && item->parent() && item->parent()->text(column) == "自动化专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2023级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "1班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2023级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }
    else if (item->text(column) == "2班" && item->parent() && item->parent()->text(column) == "智能科学与技术专业" && item->parent()->parent() &&
             item->parent()->parent()->text(column) == "2023级")
    {
        ui->stackedWidget->setCurrentWidget(ui->pg_20auto1);
    }

}

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

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

相关文章

JavaScript基础(26)_dom增删改练习

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>DOM增删改练习</title><link rel"stylesheet" href"../browser_default_style/reset.css"><style>table {borde…

分布式事务:构建无障碍的云原生应用的完美解决方案

目录 一、前言 二、分布式事务概述 2.1 什么是分布式事务 2.2 分布式事务的挑战 2.3 分布式事务的分类 三、传统解决方案分析 3.1 两阶段提交协议&#xff08;2PC&#xff09; 3.2 三阶段提交协议&#xff08;3PC&#xff09; 3.3 补偿事务 3.4 其他传统解决方案 四…

Qt/QML编程学习之心得:slider(34)

滑条slider&#xff0c;有时也成为进度条progressbar&#xff0c;在GUI界面中也是经常用到的。 import QtQuick 2.9 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.2ApplicationWindow {id:rootvisible: truewidth: 1920height: 720//title: qsTr("Hello World&q…

慕尼黑工业大学最新提出!单目实时密集建图的混合隐式场方法

作者&#xff1a;小柠檬 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 我们提出了一种新颖的方法&#xff0c;它将基于深度学习的密集SLAM与神经隐式场相结合&#xff0c;实时生成密集地图&#xff0c;而无需像以前的方法那样依赖RGB-…

Vue的api接口封装以及使用说明、模块说明

在Api目录下面建立user.js&#xff0c;如果以后有不同的接口请求地址都可以单独创建不同的&#xff0c;目的是方便维护&#xff01; import request from /utils/request 这个代码是引入之前封装好的 request.js 文件&#xff0c;具体可以参考上门一篇文档 Vue的request.js模…

基于springboot生鲜交易系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括软件架构模式、整体功能模块、数据库设计。本项…

Seata TC端协调全局事务

1、Seata server注册器 //来自RM分支事务注册 super.registerProcessor(MessageType.TYPE_BRANCH_REGISTER, onRequestProcessor, messageExecutor); //开启全局事务 super.registerProcessor(MessageType.TYPE_GLOBAL_BEGIN, onRequestProcessor, messageExecutor); //提交全…

ubuntu安装mysql(tar.xz)

0:本机Ubuntu的版本为 腾讯云 18.04 1&#xff1a;下载地址 MySQL &#xff1a;&#xff1a; 下载 MySQL 社区服务器 2&#xff1a;上传文件到服务器 3:解压 sudo sumv mysql-8.2.0-linux-glibc2.17-x86_64-minimal.tar.xz /usrtar -xvf mysql-8.2.0-linux-glibc2.17-x86_6…

谷歌最新医学领域LLM大模型:AMIE

2024年1月11日Google 研究院发布最新医疗大模型AMIE&#xff1a;用于诊断医学推理和对话的研究人工智能系统。 文章链接&#xff1a;Articulate Medical Intelligence Explorer (AMIE) giuthub&#xff1a;目前代码未开源 关于大模型之前有过一篇总结&#xff1a;大语言模型(L…

小程序基础学习(组件传参)

原理&#xff1a;通知在组件标签中传递参数已达到传参的目的 在组件的js的 properties中接受传递来的参数 然后在页面是展示这些数据 源码&#xff1a; <!--components/my-info/my-info.wxml--> <view class"title"> <text class"texts"&g…

【LangChain学习之旅】—(8) 输出解析:用OutputParser生成鲜花推荐列表

【LangChain学习之旅】—&#xff08;8&#xff09; 输出解析&#xff1a;用OutputParser生成鲜花推荐列表 LangChain 中的输出解析器Pydantic&#xff08;JSON&#xff09;解析器实战第一步&#xff1a;创建模型实例第二步&#xff1a;定义输出数据的格式第三步&#xff1a;创…

GPUMD分子动力学模拟-学习与实践

GPUMD分子动力学模拟-学习与实践 【20220813-樊哲勇 |基于GPUMD程序包的机器学习势和分子动力学模拟】 https://www.bilibili.com/video/BV1cd4y1Z7zi?share_sourcecopy_web 纯GPU下的MD分子模型系统软件 https://github.com/brucefan1983/GPUMD 跟GPUMD对接的一些python程…

调试(c语言)

前言&#xff1a; 我们在写程序的时候可能多多少少都会出现一些bug&#xff0c;使我们的程序不能正常运行&#xff0c;所以为了更快更好的找到并修复bug&#xff0c;使这些问题迎刃而解&#xff0c;学习好如何调试代码是每个学习编程的人所必备的技能。 1. 什么是bug&#xf…

Python教程(23)——Python类中常用的特殊成员

在Python中&#xff0c;类特殊成员是指以双下划线开头和结尾的属性和方法&#xff0c;也被称为魔术方法&#xff08;Magic methods&#xff09;或特殊方法&#xff08;Special methods&#xff09;。这些特殊成员在类的定义中具有特殊的语法和功能&#xff0c;用于实现对象的特…

行为型设计模式——迭代器模式

迭代器模式 迭代器模式也是非常的简单&#xff0c;定义如下&#xff1a; 提供一个对象来顺序访问聚合对象中的一系列数据&#xff0c;而不暴露聚合对象的内部表示。 相信大家都使用过类似下面的迭代器&#xff1a; List<String> list new ArrayList<>(); Iterat…

3d建模软件有哪些?3d云渲染推荐

3D建模软件有很多&#xff0c;有的非常复杂难以上手&#xff0c;那么适合新手的有哪些呢&#xff1f;一起来看看吧。 1、SketchUp SketchUp是一个用户友好且直观的建模软件&#xff0c;能与V-Ray渲染器一起使用&#xff0c;适合初学者。2、Blender Blender是一个功能强大且免费…

图片无损放大神器PhotoZoom8 Pro中文破解版

摘要 BenVista PhotoZoom中文版是一款采用专利技术的图片无损放大软件&#xff0c;被誉为放大神器。该软件以其卓越的效果而著称&#xff0c;特别是在无锯齿、不失真的完美放大图像质量方面表现出色。 软件介绍 BenVista PhotoZoom中文版是一款采用专利技术的图片无损放大软…

视频封面提取工具,批量提取视频封面

你是否曾为从大量的视频中提取封面而感到困扰&#xff1f;传统的做法是逐个打开视频&#xff0c;然后手动截图。这不仅费时费力&#xff0c;还容易出错。现在&#xff0c;有了我们【媒体梦工厂】&#xff0c;这些烦恼全部消失。不论视频数量多少&#xff0c;一键即可批量提取&a…

sentinel熔断与限流

文章目录 一、sentinel简介Sentinel 是什么&#xff1f;Sentinel安装 二、sentinel整合工程新建cloudalibaba-sentinel-service8401微服务引入依赖yml配置主启动类添加EnableDiscoveryClient业务类测试 三、sentinel流控规则基本介绍流控模式直接&#xff08;默认&#xff09;关…

掌握WPF控件:熟练常用属性(一)

WPF布局常用控件&#xff08;一&#xff09; Border Border控件是一个装饰控件&#xff0c;用于围绕其他元素绘制边框和背景。它提供了一种简单的方式来为其他控件添加边框和背景样式&#xff0c;而无需自定义控件的绘制逻辑。 常用属性描述Background用于设置背景颜色或图像…