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.mzph.cn/news/806453.shtml

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

相关文章

SpringBoot中的Redis的简单使用

在Spring Boot项目中使用Redis作为缓存、会话存储或分布式锁等组件,可以简化开发流程并充分利用Redis的高性能特性。以下是使用Spring Boot整合Redis的详细步骤: 1. 环境准备 确保开发环境中已安装: Java:用于编写和运行Spring…

特征工程(III)--特征构造

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 特征工程是数据分析…

comfyui便携版(绿色版)安装CLIP报错no module named ‘CLIP‘

具体说来就是其中的ImageRewardFilter需要用到。 要求得有CLIP 我们一般装模块都通过 pip install xxx这样的命令来装, 具体到comfyui便携版的模块安装上,一般用的是 python -m pip install xxx这样的形式(以模块化的形式安装到当前便携版的…

牛客 计算某字符出现次数

计算某字符出现次数 计算某字符出现次数 要点:1.大写字母ASCII码65开始,小写97开始; 2.或者用库函数tolower©:tolower©是一个标准库函数,它是C中库的一部分。这个函数接受一个字符(大写或小写&…

图书馆自习室|基于SSM的图书馆自习室座位预约小程序设计与实现(源码+数据库+文档)

图书馆自习室目录 基于SSM的图书馆自习室座位预约小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、小程序端: 2、后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff1a…

设计模式(016)行为型之命令模式

命令模式,它将请求封装成一个对象,从而允许客户端参数化操作队列、记录请求日志、支持撤销操作等。在命令模式中,有四个核心角色:命令接口(Command)、具体命令(ConcreteCommand)、调…

MacOS下Qt 5开发环境安装与配置

最近笔者在MacOS中使用Qt Creator开发Qt程序时遇到了一些问题,在网上查了不少资料,都没有找到解决方案,只有自己进行研究摸索了,今天晚上终于将目前遇到的问题全部解决了,特记录下来分享给大家。 笔者使用的是MacOS 1…

【高校科研前沿】青藏高原所李新研究员为第一作者在REV GEOPHYS发表长篇综述:陆面数据同化–陆面过程研究中理论与数据的和弦

1.文章简介 论文名称:Land Data Assimilation: Harmoni-zing Theory and Data in Land Surface Process Studies 第一作者及通讯作者:李新研究员(兼通讯作者) 第一作者及通讯作者单位:中国科学院青藏高原研…

Golang ProtoBuf 初学者完整教程:安装

一、Protobuf 特点 更高效:使用二进制编码,相比XML/JSON更加高效 跨语言支持:Protobuf 在 .proto 定义需要处理的结构化数据,可以通过 protoc 工具,将 .proto 文件转换为 C、C、Golang、Java、Python 等多种语言的代…

在线客服系统:客服源码与在线客服搭建企业沟通的未来

随着互联网技术的飞速发展,在线客服系统已成为企业与客户沟通的重要桥梁。在这个信息爆炸的时代,客户对于服务质量的要求越来越高,企业如何通过高效的在线客服系统提升用户体验,增强客户满意度,已成为提升竞争力的关键…

JS阅读笔记

myweb3.html <video id"video" width"400" height"300" autoplay></video> <button id"capture-btn">拍摄图片</button> <canvas id"canvas" width"400" height"300">&…

win11-CapsWriter-Offline

https://github.com/Garonix/CapsWriter-Offline. 下载exe. git clone https://github.com/Garonix/CapsWriter-Offline/tree/docker-support 权重扔进models docker-compose up -d 打开exe

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中&#xff0c;关键词布局是一个至关重要的环节。首先&#xff0c;我们需要确定核心关键词&#xff0c;然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后&#xff0c;接下来的任务就是对这些扩展后的关键词进行筛选。那么&#xff0c;如何进行有效的…

学习java第三十九天

一般使用 Autowired 注解让 Spring 容器帮我们自动装配 bean。要想把类标识成可用于 Autowired 注解自动装配的 bean 的类,可以采用以下注解实现&#xff1a; Component&#xff1a;通用的注解&#xff0c;可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层&#x…

模型训练基本概念-赛博炼丹

文章目录 拓展知识基础名词解释&#xff08;语义库更新&#xff09;机器学习任务流程模型训练基本流程模型训练详细流程正向传播与反向传播正向传播-求误差值反向传播-求参数值 学习率激活函数激活函数-为什么希望激活函数输出均值为0&#xff1f;激活函数 — softmax & ta…

机器学习和深度学习-- 李宏毅(笔记与个人理解)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 这节课总体听下来比较…

使用Docker部署开源项目FreeGPT35来免费调用ChatGPT3.5 API

Vercel部署FreeGPT35有严重限制&#xff0c;玩玩就好&#xff0c;真用还是得docker。 限制原因: Vercel的流式响应并不是一开始写流&#xff0c;客户端就能立刻收到响应流&#xff0c;而是先写到一个缓冲区&#xff0c;当流关闭才一股脑的流式响应回来(不是实时流) 因此导致: …

VideoGPT:Video Generation using VQ-VAE and Transformers

1.introduction 对于视频展示&#xff0c;选择哪种模型比较好&#xff1f;基于似然->transformers自回归。在没有空间和时间溶于的降维潜在空间中进行自回归建模是否优于在所有空间和时间像素级别上的建模&#xff1f;选择前者&#xff1a;自然图像和视频包括了大量的空间和…

Spring 统一功能处理

前言:为什么要有统一功能处理? 我们在进行数据的返回的时候,不同的方法返回的数据类型也不一样,但是我们前端有时候期望拿到是一样的数据类型。就好比买菜的时候期望最后是用一个大的塑料袋进行包装的。 那么我们可以在HTTP进行响应的之前,做一些事情,让我们返回的数据统…

【八股】AOP

AOP(Aspect Oriented Programming)&#xff0c;面向切面编程&#xff0c;他是一种编程范式。 作用&#xff1a; 在不改变原始设计的的基础上对其进行功能增强。 几个基本概念&#xff1a; 连接点&#xff1a;所有的方法 切入点&#xff1a;追加功能的方法 通知&#xff1a;追加…