当前位置: 首页 > news >正文

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等数据库呢?还是边学边看看吧。🤔

相关文章:

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

主要思路 一个登录界面&#xff0c;以管理员Or普通用户登录管理员&#xff1a;一个管理员的操作界面&#xff0c;可以把数据录入到数据库中。有返回登陆按钮&#xff0c;可以选择重新登陆&#xff08;管理员Or普通用户普通用户&#xff1a;一个主界面&#xff0c;负责展示视频…...

我的世界游戏服务器平台推荐哪里找?

我的世界服务器可以在多个平台上租赁&#xff0c;以下是一些推荐的游戏服务器平台。 1.玩家可以通过互联网上的一些平台租用游戏服务器。其中&#xff0c;国内大厂平台有阿里云、腾讯云、华为云等。这些平台提供了丰富的服务器配置和带宽选择&#xff0c;玩家可以根据自己的需求…...

用于制作耳机壳的倒模专用UV树脂有什么特点?

制作耳机壳的UV树脂耳机壳UV胶具有以下特点&#xff1a; 快速固化&#xff1a;UV树脂可以在紫外线的照射下迅速固化&#xff0c;大大缩短了制作时间。高硬度与高耐磨性&#xff1a;UV树脂具有较高的硬度和耐磨性&#xff0c;能够提供良好的保护效果。透明度高&#xff1a;UV树…...

将c、c++变为python

1.编写cpp文件 #include "pycpp.h" #include <iostream>using namespace std;PyCpp::PyCpp(){}void PyCpp::sayHello(int a){cout << "Hello Python, I am C."<<a << endl; }2.编写头文件&#xff08;声明变量&#xff09; clas…...

golang学习7,glang的web的restful接口结构体传参

接口&#xff1a; //POST请求 返回json 接口传参json r.POST("/postJson", controller.PostUserInfo) 1.定义结构体 //定义结构体 type Search struct {Id intName string }2.结构体传参 //结构体传参 func PostUserInfo(c *gin.Context) {search : &Searc…...

python模型训练

目录 1、新建模型 train_model.py 2、运行模型 &#xff08;1&#xff09;首先会下载data文件库 &#xff08;2&#xff09;完成之后会开始训练模型&#xff08;10次&#xff09; 3、 训练好之后&#xff0c;进入命令集 4、输入命令&#xff1a;python -m tensorboard.ma…...

逆向案例三:动态xhr包中AES解密的一般步骤,以精灵数据为例

补充知识&#xff1a;进行AES解密需要知道四个关键字&#xff0c;即密钥key,向量iv,模式mode,填充方式pad 一般网页AES都是16位的&#xff0c;m3u8视频加密一般是AES-128格式 网页链接:https://www.jinglingshuju.com/articles 进行抓包结果返回的是密文&#xff1a; 一般思…...

超越CPU和GPU:引领AI进化的LPU

什么是CPU CPU&#xff08;Central Processing Unit&#xff09;是由数十亿个晶体管构成的&#xff0c;可以拥有多个处理核心&#xff0c;通常被称为计算机的“大脑”。它对所有现代计算系统至关重要&#xff0c;因为它执行计算机和操作系统所需的命令和进程。CPU在决定程序运…...

MySQL 逗号分隔查询--find_in_set()函数

业务场景&#xff1a; 在使用MySQL的时候&#xff0c;可能的某个字段存储的是一个英文逗号分割的字符串&#xff08;这里我们不讨论表设计的合理性&#xff09;&#xff0c;如图所示&#xff1a; 我们在查询的时候需要匹配逗号分割中的某个字符串&#xff0c;该怎么查询呢&am…...

【物联网应用案例】智能农业的 9 个技术用例

一、农业中的物联网用例 一般而言&#xff0c;农业物联网传感器以及农业物联网应用有多种类型&#xff1a; 1. 气候条件监测 气象站无疑是当今智能农业领域最受欢迎的设备。这款设备集成了多种智能农业传感器&#xff0c;能够在现场对各类数据进行收集&#xff0c;然后迅速将…...

前端开发——ElementUI组件的使用

文章目录 1. Tabs标签页2. 单选框 el-radio3. 复选框 el-checkbox4. 下拉框 el-select5. 表格 el-table6. 对话框 el-dialog7. 文字提示 el-tooltip8. 抽屉 el-drawer 1. Tabs标签页 <template><el-tabs v-model"activeName" tab-click"handleClick&q…...

Unity编写Shader内置各种矩阵和方法介绍

嗨&#xff0c;各位小伙伴们&#xff0c;我是你们的好朋友咕噜铁蛋&#xff01;今天&#xff0c;我们要来聊一聊关于Unity中编写Shader时内置的各种矩阵和方法。作为Unity开发者&#xff0c;掌握Shader编写是非常重要的一项技能&#xff0c;而了解内置的矩阵和方法将帮助我们更…...

初学者如何使用QT新建一个包含UI界面的C++项目

文章目录 一、下载并安装QT51、下载安装包2、注册/登录账号3、安装qt6 二、新建QT Widget项目1、新建项目并且运行2、易错点&#xff1a;可能运行成功得到UI界面但是会报错&#xff08;原因是使用了中文路径&#xff09; 一、下载并安装QT5 1、下载安装包 进入下载网址 Windo…...

韦东山嵌入式Liunx入门驱动开发四

文章目录 一、异常与中断的概念及处理流程1-1 中断的引入1-2 栈(1) CPU实现a ab的过程(2) 进程与线程 1-3 Linux系统对中断处理的演进1-4 Linux 中断系统中的重要数据结构(1) irq_desc 结构体(2) irqaction 结构体(3) irq_data 结构体(4) irq_domain 结构体(5) irq_domain 结构…...

ubuntu基础操作(1)-个人笔记

搜狗输入法Linux官网-首页搜狗输入法for linux—支持全拼、简拼、模糊音、云输入、皮肤、中英混输https://pinyin.sogou.com/linux 1.关闭sudo密码&#xff1a; 终端&#xff08;ctrl alt t&#xff09;输入 sudo visudo 打开visudo 找到 %sudo ALL(ALL:ALL) ALL 这一行…...

Spring Cloud2022之OpenFeign使用以及部分源码分析

OpenFeign使用 Feign和OpenFeign Feign是Netflix开发的⼀个轻量级RESTful的HTTP服务客户端&#xff0c;可以使用⽤它来发起请求&#xff0c;进行远程调用。Fegin是以Java接口注解的⽅式调⽤Http请求&#xff0c;而不是像RestTemplate那样&#xff0c;在Java中通过封装HTTP请求…...

【非比较排序】计算排序算法

目录 CountSort计数排序 整体思想 图解分析 代码实现 时间复杂度&优缺分析 CountSort计数排序 计数排序是一种非比较排序&#xff0c;不需要像前面的排序一样去比较。 计数排序的特性总结&#xff1a; 1. 计数排序在数据范围集中时&#xff0c;效率很高&#xff0c;但…...

数据结构与算法 - 数组与二分查找 + Leetcode典型题

1. 什么是数组 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 C中二维数组在地址空间上也是连续的。 需注意&#xff1a; 数组的下标从0开始。数组内存空间的地址是连续的。数组的元素是不能删的&#xff0c…...

SQL进阶(三):Join 小技巧:提升数据的处理速度

复杂数据结构处理&#xff1a;Join 小技巧&#xff1a;提升数据的处理速度 本文是在原本sql闯关的基础上总结得来&#xff0c;加入了自己的理解以及疑问解答&#xff08;by GPT4&#xff09; 原活动链接 用到的数据&#xff1a;链接 提取码&#xff1a;l03e 目录 1. 课前小问…...

开发知识点-.netC#图形用户界面开发之WPF

C#图形用户界面开发 NuGet框架简介WinForms(Windows Forms):WPF(Windows Presentation Foundation):UWP(Universal Windows Platform):MAUI(Multi-platform App UI):选择控件参考文章随笔分类 - WPF入门基础教程系列...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

CTF show 数学不及格

拿到题目先查一下壳&#xff0c;看一下信息 发现是一个ELF文件&#xff0c;64位的 ​ 用IDA Pro 64 打开这个文件 ​ 然后点击F5进行伪代码转换 可以看到有五个if判断&#xff0c;第一个argc ! 5这个判断并没有起太大作用&#xff0c;主要是下面四个if判断 ​ 根据题目…...