Qt 多窗体

前言

        在 Qt编程中经常会遇到要在多个界面之间切换的情况,如从登录界面跳转到主界面,从主界面跳转到设置界面,再返回到主界面。我们将会用一个简单的示例来实现多窗体功能。


登录窗口

        创建基类为QMainWindow,类名为LoginWin。再使用ui界面设计。

        将密码框不显示出来。

        再右键单击按钮进行跳转槽函数编辑:

void loginwin::on_login_button_clicked()
{QString user = "root";QString password = "123456";if((ui->userline->text() == user)&&(ui->passwordline->text() == password)){QMessageBox::about(this,"成功","登录成功");}else{QMessageBox::critical(this,"失败","输入有误",QMessageBox::Ok,QMessageBox::NoButton);}
}

        在以后的介绍中,校准用户名和密码的过程会再数据库里面校对。 现在我们拥有了登录界面,还差系统界面。


系统界面

        我们在原来项目里面添加:

         在选择模板类的时候选择MainWindow。并且在ui设计界面

        登录界面 loginwin.cpp 修改部分代码,在登录按钮对应的槽函数中创建主界面对象并显示主界面即可。主界面显示出来后登录界面就可以销毁了。创建的时候注意主界面要单独创建,不能与登录界面有关联。主要代码如下(注意添加头文件 )。

void loginwin::on_login_button_clicked()
{QString user = "root";QString password = "123456";if((ui->userline->text() == user)&&(ui->passwordline->text() == password)){//如果正确则跳转至主界面MainWindow *win=new MainWindow;win->show();this->close();//这里不能使用delete,因为this是主函数中创建的栈空间,系统会自动释放}elseQMessageBox::critical(this,"失败","输入有误",QMessageBox::Ok,QMessageBox::NoButton);
}

        跳转到主界面,单击主界面“退出”按钮的时候返回到登录界面)这种操作不是经常性操作,所以开始登录的时候已经关闭窗口了,那么现在要让登录界面显示就要重新创建一个界面)。在mainwindow.ui中单击“退出登录”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked()信号的槽函数,代码如下(注意添加头文件,包含其他窗体)。

void MainWindow::on_quit_button_clicked()
{loginwin *win=new loginwin;win->show();delete this;//此时就可以用delete
}

        由主界面跳转到设置界面:在 mainwindow.ui中选择“设置”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked()信号的槽函数,代码如下。(此时又添加也setwin类界面)

void MainWindow::on_edit_button_clicked()
{// 创建设置界面,并且把 this 传入设置界面用于后面的返回// 注意 MainWindow、SetWin 窗口的界面在设计的时候选择 MainWindow 界面模板设计实现setWin *win = new setWin(this);win->show();this->hide();// 主界面隐藏(后期直接可以显示)
}

        再从设置界面返回主界面:在 setwin.ui中单击“返回主窗口”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked() 信号的槽函数,代码如下。

void setWin::on_back_button_clicked()
{this->parentWidget()->show();delete this;// 释放设置界面
}

        结果:

 


        这个简单的例子就把多窗体功能演示了一遍,其实后面的父窗口hide(),也可以在前面的代码中使用!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新零售SaaS架构:客户管理系统架构设计(万字图文总结)

什么是客户管理系统? 客户管理系统,也称为CRM(Customer Relationship Management),主要目标是建立、发展和维护好客户关系。 CRM系统围绕客户全生命周期的管理,吸引和留存客户,实现缩短销售周…

记一次IP访问MySQL失败多次被自动锁定导致无法连接问题,解决方法只需一条SQL。

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 前言 今天下午还在带着耳机摸鱼&#xff…

Tomcat 获取客户端真实IP X-Forwarded-For

Tomcat 获取客户端真实IP X-Forwarded-For 代码实现&#xff1a; 在Host标签下面添加代码&#xff1a; <Valve className"org.apache.catalina.valves.RemoteIpValve" remoteIpHeader"x-forwarded-for" remoteIpProxiesHeader"x-forwarded-by&q…

【Android】【root remount】【3】remount 文件详细信息获取

前言 我们在root & remount 设备后&#xff0c;push相关文件到systm 、vendor、product 等目录进行调试&#xff0c;那么我们push的文件被保存在什么地方呢&#xff1f; 以及我们FWS、app侧如何过去push 的文件信息呢&#xff1f; remount push 文件保存 push 文件保存的…

第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、字串排序2、门牌制作3、既约分数4、蛇形填数5、跑步锻炼6、七段码7、成绩统计8、回文日期9、子串分值和10、平面切分 1、字串排序 // 转载博客链接 https://blog.csdn.net/we…

[leetcode]remove-duplicates-from-sorted-list-ii

. - 力扣&#xff08;LeetCode&#xff09; 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5]示例 2&…

SVN的介绍

首先SVN是什么&#xff1a; Apache下的一个开源的项目Subversion&#xff0c;通常缩写为 SVN&#xff0c;是一个版本控制系统。 版本控制系统是一个软件&#xff0c;它可以伴随我们软件开发人员一起工作&#xff0c;让我们编写代码的完整的历史保存下来。 目前它的各个版本的…

【mT5多语言翻译】之五——训练:中央日志、训练可视化、PEFT微调

请参考本系列目录&#xff1a;【mT5多语言翻译】之一——实战项目总览 [1] 模型训练与验证 在上一篇实战博客中&#xff0c;我们讲解了访问数据集中每个batch数据的方法。接下来我们介绍如何训练mT5模型进行多语言翻译微调。 首先加载模型&#xff0c;并把模型设置为训练状态&a…

STL库 —— list 的编写

目录 一、成员变量 ​编辑 二、push_back 函数 三、迭代器 iterator 3.1 iterator 结构体 3.2 begin() 与 end() 函数 3.3 iterator 运算符重载 3.4 -> 的重载 3.5 const_iterator 四、测试代码 五、修饰符成员 5.1 insert 函数 5.2 erase 函数 5.3 push 函数…

机器学习和深度学习-- 李宏毅(笔记与个人理解)Day10

Day 10 Genaral GUidance training Loss 不够的case Loss on Testing data over fitting 为什么over fitting 留到下下周哦~~ 期待 solve CNN卷积神经网络 Bias-Conplexiy Trade off cross Validation how to split? N-fold Cross Validation mismatch 这节课总体听下来比较…

lovesql 手工sql注入

1.页面 2.万能密码登录成功 我还傻乎乎的以为密码就是flag 但不是 3. 继续注入 判断列数 确定了只有三列 开始尝试联合注入 4.使用联合注入之前先判断显示位 5.之后一步一步的构造&#xff0c;先得到当前数据库名 利用database&#xff08;&#xff09; 再得到库里有哪些表 …

Vue+el-table 修改表格 单元格横线边框颜色及表格空数据时边框颜色

需求 目前 找到对应的css样式进行修改 修改后 css样式 >>>.el-table th.el-table__cell.is-leaf {border-bottom: 1px solid #444B5F !important;}>>>.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf {border-bottom: 1px solid #444B5F …

目标检测——3D车道数据集

一、重要性及意义 3D车道检测在自动驾驶和智能交通领域具有极其重要的地位&#xff0c;其重要性和意义主要体现在以下几个方面&#xff1a; 首先&#xff0c;3D车道检测可以精确判断车辆在道路上的位置、方向和速度&#xff0c;从而预测潜在的危险情况并及时采取措施。这种能…

如何在极狐GitLab 启用依赖代理功能

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何在[极狐GitLab…

UDP实现Mini版在线聊天室

实现原理 只有当客户端先对服务器发送online消息的时候&#xff0c;服务器才会把客户端加入到在线列表。当在线列表的用户发消息的时候&#xff0c;服务器会把消息广播给在线列表中的所有用户。而当用户输入offline时&#xff0c;表明自己要下线了&#xff0c;此时服务器把该用…

【软件测试】个人博客系统测试

个人博客系统测试 一、项目背景1.1 技术背景1.2 功能背景 二、自动化测试2.1 什么是自动化测试2.2 通过使用selenium进行自动化测试的编写&#xff08;Java实现&#xff09;2.3 编写测试用例&#xff0c;执行自动化测试2.3.1 输入用户名:test,密码:123&#xff0c;登录成功2.3.…

云服务器上Docker启动的MySQL会自动删除数据库的问题

一、问题说明 除了常见的情况&#xff0c;例如没有实现数据挂载&#xff0c;导致数据丢失外&#xff0c;还需要考虑数据库是否被攻击&#xff0c;下图 REVOVER_YOUR_DATA 就代表被勒索了&#xff0c;这种情况通常是数据库端口使用了默认端口&#xff08;3306&#xff09;且密码…

jmeter实验 模拟:从CSV数据到加密请求到解密返回数据再到跨越线程组访问解密后的数据

注意,本实验所说的加密只是模拟加密解密,您需要届时写自己的加解密算法或者引用含有加密算法的相关jar包才行. 思路: 线程组1: 1.从CSV文件读取原始数据 2.将读取到的数据用BeanShell预习处理器进行加密 3.HTTP提取器使用加密后的数据发起请求 4.使用BeanShell后置处理器…

vite+react+ts+scss 创建项目

npm create vitelatest输入项目名称选择react选择typescript swc WC 通过利用 Rust 编写的编译器&#xff0c;使用了更先进的优化技术&#xff0c;使得它在处理 TypeScript 代码时能够更快地进行转换和编译。特别是在大型项目中&#xff0c;SWC 相对于传统的 TypeScript 编译器…

使用QT 开发不规则窗体

使用QT 开发不规则窗体 不规则窗体贴图法的不规则窗体创建UI模板创建一个父类创建业务窗体main函数直接调用user_dialog创建QSS文件 完整的QT工程 不规则窗体 QT中开发不规则窗体有两种方法&#xff1a;&#xff08;1&#xff09;第一种方法&#xff0c;使用QWidget::setMask函…