个人信息窗口(三)

news2024/11/28 10:55:38

个人信息窗口(三)

前言

在上一集我们就可以显示我们就可以全部显示所有的未隐藏的组件了,但是隐藏的组件我们还没有蛆完成,所以我们这一集就需要去做隐藏组件的显示,以及如何切换到隐藏的组件的功能。

需求分析并实现

我们需要点击修改按钮,就能够显示修改的输入框以及确认的按钮。

点击修改按钮后,我们需要先隐藏对应的Label组件以及ModifyBtn组件,再把这两个对应的组件从layout上移除。然后就要显示对应的Edit和Submit组件,并且添加到之前删除的组件的原位置。

我们就需要使用连接槽来实现。

 connect(nameModifyBtn, &QPushButton::clicked, this, [=](){
        //隐藏并移除Label、Btn
        nameLabel->hide();
        nameModifyBtn->hide();
        layout->removeWidget(nameLabel);
        layout->removeWidget(nameModifyBtn);
        //显示Edit、Btn
        nameEdit->show();
        nameSubmitBtn->show();
        layout->addWidget(nameEdit,1,2);
        layout->addWidget(nameSubmitBtn,1,3);
    });

这里就可以实现隐藏组件的呈现了。

但是貌似还不够,我们也应该把Label上的内容先放置再我们的编辑框上。

    //输入框内容设置
    nameEdit->setText(nameLabel->text());

总体代码如下

    //连接信号槽
    connect(nameModifyBtn, &QPushButton::clicked, this, [=](){
        //隐藏并移除Label、Btn
        nameLabel->hide();
        nameModifyBtn->hide();
        layout->removeWidget(nameLabel);
        layout->removeWidget(nameModifyBtn);
        //显示Edit、Btn
        nameEdit->show();
        nameSubmitBtn->show();
        layout->addWidget(nameEdit,1,2);
        layout->addWidget(nameSubmitBtn,1,3);
        //输入框内容设置
        nameEdit->setText(nameLabel->text());
    });
    connect(descModifyBtn, &QPushButton::clicked, this, [=](){
        //隐藏并移除Label、Btn
        descLabel->hide();
        descModifyBtn->hide();
        layout->removeWidget(descLabel);
        layout->removeWidget(descModifyBtn);
        //显示Edit、Btn
        descEdit->show();
        descSubmitBtn->show();
        layout->addWidget(descEdit,2,2);
        layout->addWidget(descSubmitBtn,2,3);
        //输入框内容设置
        descEdit->setText(descLabel->text());
    });
    connect(phoneModifyBtn, &QPushButton::clicked, this, [=](){
        //隐藏并移除Label、Btn
        phoneLabel->hide();
        phoneModifyBtn->hide();
        layout->removeWidget(phoneLabel);
        layout->removeWidget(phoneModifyBtn);
        //显示Edit、Btn
        phoneEdit->show();
        phoneSubmitBtn->show();
        layout->addWidget(phoneEdit,3,2);
        layout->addWidget(phoneSubmitBtn,3,3);
        //输入框内容设置
        phoneEdit->setText(phoneLabel->text());
    });

我们来看看效果。

这里就可以看到已经成功实现了这个功能。

但是发现这些输入框靠得太近了。所以我们需要修改一下setVerticalSpacing。

设置一个值,就可以实现这个效果了,大家可以自行设置。
但是我们发现这个验证码很突兀,我们应该再修改电话的时候,才弹出获取验证码的功能。所以我们需要先把验证码的组件先隐藏起来,等点击修改电话的按钮的时候,我们就显示这些有关验证码的组件。

    //获取验证码
    verifyCodeTag = new QLabel();
    verifyCodeTag->setFixedSize(50,height);
    verifyCodeTag->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    verifyCodeTag->setText("验证码");
    verifyCodeTag->setStyleSheet(labelStyle);
    verifyCodeTag->hide();

    verifyCodeEdit = new QLineEdit();
    verifyCodeEdit->setFixedHeight(height);
    verifyCodeEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    verifyCodeEdit->setStyleSheet(editStyle);
    verifyCodeEdit->hide();

    getVerifyCodeBtn = new QPushButton();
    getVerifyCodeBtn->setText("获取验证码");
    getVerifyCodeBtn->setStyleSheet("QPushButton { border: none; background-color: transparent; } QPushButton:pressed { background-color: rgb(231,231,231); }");
    getVerifyCodeBtn->setFixedSize(70,height);
    getVerifyCodeBtn->hide();

我们要对这三个内容先隐藏。

connect(phoneModifyBtn, &QPushButton::clicked, this, [=](){
        //隐藏并移除Label、Btn
        phoneLabel->hide();
        phoneModifyBtn->hide();
        layout->removeWidget(phoneLabel);
        layout->removeWidget(phoneModifyBtn);
        //显示Edit、Btn
        phoneEdit->show();
        phoneSubmitBtn->show();
        layout->addWidget(phoneEdit,3,2);
        layout->addWidget(phoneSubmitBtn,3,3);

        verifyCodeTag->show();
        verifyCodeEdit->show();
        getVerifyCodeBtn->show();

        layout->addWidget(verifyCodeTag,4,1);
        layout->addWidget(verifyCodeEdit,4,2);
        layout->addWidget(getVerifyCodeBtn,4,3);

        //输入框内容设置
        phoneEdit->setText(phoneLabel->text());
    });
}

点击修改手机号码的时候,就让他显示出来并添加到布局管理器当中。

那么个人信息这里就算完成了,当然修改之后的那些功能是需要服务器端的交互才能够实现,所以等后面我们去完成了服务器端之后再去实现。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7 nginx优化

优化nginx进程个数的策略 在高并发、高访问量的web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求。worker_processes 1;一般调整到与CPU的颗数相同查看LInux可查看CPU个数及总核数grep processor /proc/cpuinfo|wc …

开放式耳机排行榜前十名,开放式耳机全价位段盘点

关于开放式蓝牙耳机的品牌选择,这是一个常见的问题。因为市面上的蓝牙耳机种类繁多,各种样式和类型层出不穷,让许多消费者感到困惑,不知道如何选择一款适合自己的蓝牙耳机。一款好的蓝牙耳机不仅需要音质好、配置高,还…

计算机毕业设计hadoop+spark知识图谱中药推荐系统 中药材推荐系统 中药可视化 中药数据分析 中药爬虫 机器学习 深度学习 人工智能 大数据

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 摘 要 本文所探讨的领域是…

深度学习-2:数据向量化

向量化 在逻辑回归中,x,w,b都是列向量,若要计算w.T*xb,不向量化的话就需要for循环计算起来很麻烦 向量化后,使用numpy.dot(w,x)函数即可快速计算 逻辑回归向量化

接口测试(六)jmeter——参数化(配置元件 --> 用户定义的变量)

一、jmeter——参数化(配置元件 --> 用户定义的变量) 注:示例仅供参考 1. 参数化格式:${变量名} 2. 配置元件:用户定义的变量 3. 添加【用户定义的变量】,【线程组】–>【添加】–>【配置元件】–…

手持无人机飞手执照,会组装调试入伍当兵有多香!

手持无人机飞手执照,并具备组装调试技能,在入伍当兵时确实会具有显著的优势和吸引力。以下是对这一情况的详细分析: 一、无人机飞手执照的优势 1. 法规遵从与安全保障: 根据《民用无人驾驶航空器系统驾驶员管理暂行规定》等相关…

深入浅出 Vue3 nextTick

程序员节日快乐~ #1024程序员节 | 征文# nextTick 概念 当你在 Vue 的响应式数据模型中对数据进行修改时,这些变化并不会立即同步到 DOM 上_,而是会在当前的微任务队列(microtask queue)执行完毕后进行批量更新。这种机制被称为…

【宝塔面板】轻松使用docker搭建lobe-chat项目(AI对话)

我们的目的:就是下面的这个玩意: 主要也就三步 1、创建容器编排模版 2、创建容器 3、配置 第一步:创建编排模版 代码我放下面了:(你要记住这里开放的是3210端口) # https://github.com/lobehub/lobe-ch…

Spring Boot驱动的植物健康监测革命

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

Linux Redis查询key与移除日常操作

维护老项目Express node 编写的后端程序、有这么一个方法、没有设置redis过期时间(建议设置过期时间,毕竟登录生产服务器并不是每个人都有权限登录的!!!)。如果变动只能通过登录生产服务器、手动修改… 于…

自动化抖音点赞取消脚本批量处理

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

CSS综合案例——新闻详情

一、知识点 1、文字颜色 属性名:color 属性值: 颜色表示方式属性值说明使用场景颜色关键字颜色英文单词red,green,blue学习测试rgb表示法rg(r,g,b)r,g,b表示红绿蓝三原色,取值0-255了解rgba表示法rgba(r,g,b,a)a表示透明度,取…

CVE-2024-36401 Geoserver远程代码执行漏洞复现

目录 CVE-2024-36401 Geoserver远程代码执行漏洞 影响版本 环境搭建 漏洞复现 poc GeoServer是一个用Java编写的开源软件服务器,允许用户共享和编辑地理空间数据。它为提供交互操作性而设计,使用开放标准发布来自任何主要空间数据源的数据。 CVE-20…

大模型日常:支持中英混合及多语言文生语音的MeloTTS本地部署

简要介绍 MeloTTS 是一个强大的多语言文本转语音库,特别设计以支持CPU环境下的实时语音合成,无需依赖GPU。该库能够输出自然流畅的语音,提供了一种高效便捷的方式,将文本信息转换为听觉内容。MeloTTS不仅支持多种语言&#xff0c…

Ubuntu20.04安装opencv3.1.0(包含详细解决报错方法)

我的环境是cuda10.1 cmake是3.16.5 第一步骤:下载安装包 第二步骤:编译环境安装 第三步骤:解压opencv安装包,并且在opencv文件夹内新建build文件夹 第四步骤:打开cmake-gui, 第五步骤:进行…

驱动-----内核启动

目录 一、最小系统 二.操作系统 三.操作系统的启动 四.linux启动准备工作 五.安装nfs和tftp环境 六.总结 设备驱动:驱使设备行动的程序。 裸机程序:没有和操作系统结合的驱动程序pwm.c,uart.c,adc.c 有操作系统的时候,应用层不能直接操作硬件,由底层写驱动的人写…

凹凸性和拐点的概念

二阶导不存在也可能是拐点 判断拐点的充分条件

第三十一篇:TCP协议如何解决丢包的问题,TCP系列六

前面我们说TCP协议是可靠的、基于字节流、面向连接的传输层通信协议; 这里我想换种说法:与其说是TCP协议是可靠的,不如说传输层程序软件实现了TCP协议的规范(网络层次模型,每一层都有对应的程序软件)&…

【从零开始的LeetCode-算法】3185. 构成整天的下标对数目 II

给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时&#xff0c…

ApacheShiro反序列化 550 721漏洞

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理个漏洞被称为 Shiro550 是因为在Apache Shiro的GitHub问题跟踪器中&#xff0c;该漏洞最初被标记为第550个问题,721漏洞名称也是由此而来 Shiro-550 CVE-2016-4437 Shiro反序列化Docker复现 …