QT C++实战:实现用户登录页面及多个界面跳转

主要思路

  • 一个登录界面,以管理员Or普通用户登录
  • 管理员:一个管理员的操作界面,可以把数据录入到数据库中。有返回登陆按钮,可以选择重新登陆(管理员Or普通用户
  • 普通用户:一个主界面,负责展示视频和检测。有返回登陆按钮,可以选择重新登陆(管理员Or普通用户

参考教程:P1 登入Qt界面布局,多个界面切换

一、UI设计

我们一共要设计3个界面

  • 主界面(与项目同名):主要的功能实现界面:视频观看、算法检测可视化
  • 登录界面
  • 管理员信息管理界面

1.0:vs2019中添加QT界面:

一般用vs2019开发,创建Qt Widgets Application之后,会自带一个和项目名同名的主窗口类。这个时候需要手动创建另外一个,即新窗口类。创建方法可以参考这篇博客:Qt5.12.6 + VS2019 点击按钮弹出新窗口

在这里插入图片描述
在这里插入图片描述

1.1:主界面:

由于我的项目名是:new_QT_python,我的主界面为:

  • new_QT_python.ui
  • new_QT_python.h
  • new_QT_python.cpp

在这里插入图片描述

这里UI以及主要功能已经完成,这里不再详细讲解。重点讲解用户登录功能的实现以及界面跳转

1.2:登录界面

添加Login登录界面后,双击Login.ui进入QtCreator进行UI设计:
在这里插入图片描述

注意,在main.cpp中记得修改展示界面。使得程序一开始运行,首先展示的是登录界面。

#include "Login.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);//登录界面的显示Login w;w.show();return a.exec();
}

1.3:管理员管理界面

还是按照上面相同的方式创造界面就行,这里界面设计和逻辑功能暂时忽略。
在这里插入图片描述

二、实现页面跳转(各个槽函数

2.1:登陆界面的槽函数

修改控件名称,编写对应的槽函数:
在这里插入图片描述

tips:用Vs2019创建的QT项目此时可能会报错:
解决方法:手动添加槽函数,会麻烦些,但也不要紧
在这里插入图片描述

首先先确定主要3个槽函数(暂时不做实现)

login.h

#pragma once#include <QMainWindow>
#include "ui_Login.h"class Login : public QMainWindow
{Q_OBJECTpublic:Login(QWidget *parent = nullptr);~Login();private:Ui::LoginClass ui;private slots:void on_inlog_clicked();void on_quit_clicked();void on_checkBox_clicked(bool checked);
}
;

login.cpp

#include "Login.h"Login::Login(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);this->setWindowTitle("用户登录");//登录按钮connect(ui.inlog, &QPushButton::clicked, this, &Login::on_inlog_clicked);//退出按钮connect(ui.quit, &QPushButton::clicked, this, &Login::on_quit_clicked);//显示密码按钮connect(ui.checkBox, &QPushButton::clicked, this, &Login::on_checkBox_clicked);
}Login::~Login()
{
}
//登录按钮对应槽函数:登陆成功跳转到主功能界面or管理员界面
void Login::on_inlog_clicked() {}
//退出按钮对应槽函数:关闭当前窗口,退出程序
void Login::on_quit_clicked() {}
//显示密码按钮,1表示选中,0表示密文显示
void Login::on_checkBox_clicked(bool checked) {}

Tips:通过ui.nameui.pswd可以对其进行各种操作

下面实现槽函数和以及用户名以及密码的输入及限制功能:

#include "Login.h"
#include "new_QT_python.h"//登录按钮对应槽函数:登陆成功跳转到主功能界面or管理员界面
void Login::on_inlog_clicked() {//创建功能主界面并显示new_QT_python* w = new new_QT_python();w->show();//隐藏this->hide();
}//退出按钮对应槽函数:关闭当前窗口,退出程序
void Login::on_quit_clicked() {//关闭当前界面this->close();
}
//显示密码按钮,1表示选中,0表示密文显示/*显示,不回显,密文:enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit };*/
void Login::on_checkBox_clicked(bool checked) {if (checked) {//显示密码ui.pswd->setEchoMode(QLineEdit::Normal);}else {//密文显示ui.pswd->setEchoMode(QLineEdit::Password);}
} 

三、实现登录的逻辑功能

主要逻辑功能:输入管理员账户和密码:跳转到管理员操作界面(按返回则返回到登录界面);输入普通用户的账号和密码:跳转到普通用户的主功能操作界面(按返回则返回到登录界面)

🪧思路:
主要是在void Login::on_inlog_clicked() 槽函数中进行逻辑控制:

  • 判断账号与密码是否和管理员的相同,若相同,则进入管理员管理施工信息的页面
  • 判断账号和密码是否和普通用户的相同,若相同,则进入普通用户的主要功能的管理页面
  • 否则,不能登录,返回。
Login::Login(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);this->setWindowTitle("用户登录");//登录按钮connect(ui.inlog, &QPushButton::clicked, this, &Login::on_inlog_clicked);//退出按钮connect(ui.quit, &QPushButton::clicked, this, &Login::on_quit_clicked);//显示密码按钮connect(ui.checkBox, &QPushButton::clicked, this, &Login::on_checkBox_clicked);//一开始时,需要对密码进行密文显示//密文显示ui.pswd->setEchoMode(QLineEdit::Password);ui.pswd->setMaxLength(6);//限制密码最大为6个字符
}

基本登录功能以及页面之间的跳转逻辑已经写好了。下面主要任务是学习QT如何连接数据库,一方面是项目需要将施工信息录入到数据库中;另一方面,上面代码中管理员和普通用户的账号和密码信息都是写死的,也就是硬编码,但是按理来说最好还是将用户信息存储在数据库当中。还有一个问题是,将数据库和QT进行连接后,对后面项目的打包是否有影响,是否要提前在对方主机上安装mysql等数据库呢?还是边学边看看吧。🤔

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

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

相关文章

如何使用chartGPT——提问词MarkDown

一.如何使用chartGPT GPT 生成的答案质量&#xff0c;完全取决于你『问它』&#xff0c;以及『引导它』的方式&#xff0c;如果你能问得好&#xff0c;引导的好&#xff0c;那么它就会帮你生成让你惊喜的答案&#xff0c;反之则无价值&#xff0c;假大空 打造场景库&#xff…

python微信小程序uniapp+vue校园勤工俭学助学平台springboot/php/nodejs

系统功能设计是在系统开发和设计思想的总体任务的基础上完成的。该系统的主要任务是实现校园勤工助学平台管理&#xff0c;使学生可以通过指令完成整个校园勤工助学平台的操作。 从上面的描述中可以基本可以实现软件的功能&#xff1a; 1、开发实现校园勤工助学平台的整个系统…

数据分析案例-社交媒体情绪数据集可视化分析(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【vue】什么是虚拟Dom,怎么实现虚拟DOM,虚拟DOM一定更快吗

什么是虚拟Dom 虚拟 DOM 基于虚拟节点 VNode&#xff0c;VNode 本质上是一个对象&#xff0c;VDOM 就是VNode 组成的 废话&#xff0c;js 中所有的东西都是对象 虚拟DOM 为什么快&#xff0c;做了哪些优化 批量更新 多个DOM合并更新减少浏览器的重排和重绘局部更新 通过新VDO…

猫头虎分享已解决Bug || 依赖问题:DependencyNotFoundException: Module ‘xyz‘ was not found 问题

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

MATLAB_ESP32有限脉冲响应FIR无限脉冲响应IIR滤波器

要点 ESP32闪烁LED&#xff0c;计时LEDESP32基础控制&#xff1a;温控输出串口监控&#xff0c;LCD事件计数器&#xff0c;SD卡读写&#xff0c;扫描WiFi网络&#xff0c;手机控制LED&#xff0c;经典蓝牙、数字麦克风捕捉音频、使用放大器和喇叭、播放SD卡和闪存MP3文件、立体…

pdf怎么合并在一起?

pdf怎么合并在一起&#xff1f;在日常工作和学习中&#xff0c;我们常常需要处理大量的PDF文件。有时候&#xff0c;我们可能希望将多个PDF文件合并成一个文件&#xff0c;以便于管理和分享。这时候&#xff0c;PDF文件合并工具就能派上用场了。PDF文件合并是一种将多个PDF文件…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的活体人脸检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本篇博客详细讲述了如何利用深度学习构建一个活体人脸检测系统&#xff0c;并且提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并进行了与前代算法YOLOv7、YOLOv6、YOLOv5的细致对比&#xff0c;展示了其在图像、视频、实时视频流和批量文件处…

Python 全栈系列227 部署chatglm3-API接口

说明 上一篇介绍了基于算力租用的方式部署chatglm3, 见文章&#xff1b;本篇接着看如何使用API方式进行使用。 内容 1 官方接口 详情可见接口调用文档 调用有两种方式&#xff0c;SDK包和Http。一般来说&#xff0c;用SDK会省事一些。 以下是Python SDK包的git项目地址 安…

从新手到专家:AutoCAD 完全指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 引言 AutoCAD是一款广泛用于工程设计和绘图的…

R语言——条形图数据可视化的多种方式

本文章将会介绍如何使用R语言中的ggplot2包使用条形图进行数据可视化。将会使用一个“生产企业原材料的订购与运输”的订单数据&#xff0c;该数据来自2021数学建模国赛C题。 某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料总体可分为 A B C 三种类…

Cyber RT 参数

以共享的方式实现不同节点之间数据交互的通信模式。 参数服务器是基于服务实现的&#xff0c;包含客户端和服务器端&#xff0c;服务端节点可以存储数据&#xff0c;客户端节点可以访问服务端节点操作数据&#xff0c;这个过程虽然基于请求响应的&#xff0c;但是无需自己实现…