[C++ QT项目实战]----C++ QT系统登陆界面设计

前言

        在C++ QT项目开发过程中,设计系统登录界面可以使用QT框架来实现。以下是一个简单的系统登录界面设计示例:

  1. 创建登录界面UI:可以使用QT Designer来设计登录界面的UI,包括用户名输入框、密码输入框、登录按钮等。在QT Designer中,可以直观地拖放控件来设计界面布局。

  2. 实现登录功能:在C++中,可以通过连接信号与槽的方式实现登录功能。当用户点击登录按钮时,可以连接按钮的clicked信号与相应的槽函数,用于验证用户名密码是否正确。

  3. 用户验证:在槽函数中,可以获取用户名密码输入框中的文本内容,并与预先设置的用户名密码进行比对。如果用户名密码正确,可以跳转到系统主界面;如果不正确,可以提示用户重新输入。

  4. 界面美化:可以使用QT的样式表来美化界面,包括设置背景颜色、字体样式、按钮样式等。

正文

01-功能演示

        首先在QT中设计界面,如下图所示:字体,样式,颜色,和名称均可以按照意愿进行设计

         运行之后,登录界面如下图所示,可以进行用户名和密码输入登录主界面操作

        登录之后,主界面如下图所示,这是自己设计的界面,可以根据需要设计 

02-功能实现

        分三个文件进行分析,包括dialog_login.h,dialog_login.cpp,main主函数

        下方是dialog_login.cpp文件:其中path_deploy_cmBox为选择生产现场还是程序调试的控件,需要与槽函数path_deploy_cmBox_switch()连接,槽函数实现在下方代码中。函数on_login_ok_Btn_clicked()为上方设计中确定按钮对应的函数,当用户名和密码输入正确,点击确定之后,登陆界面被隐藏,主界面显示。

#include "dialog_login.h"
#include "ui_dialog_login.h"
#include <QComboBox>
#include <QMessageBox>
#include <QDebug>
#include "cglobal.h"
#include "mainwindow.h"
#include"ui_mainwindow.h"
Dialog_login::Dialog_login(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog_login)
{ui->setupUi(this);ui->pass_QLE->setEchoMode(QLineEdit::Password);setWindowTitle(QString::fromLocal8Bit("主系统"));connect(ui->path_deploy_cmBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(path_deploy_cmBox_switch()));}Dialog_login::~Dialog_login()
{delete ui;
}void Dialog_login::on_login_ok_Btn_clicked()
{QString str_user,str_pass;str_user = ui->user_QLE->text();str_pass = ui->pass_QLE->text();if (str_user=="beijing" &&str_pass=="beijing"){this->hide();MainWindow *pMainWindow = new MainWindow();pMainWindow->show();}else{ui->user_QLE->setText("");ui->pass_QLE->setText("");QMessageBox box(QMessageBox::Warning, "login", "login account  incorrect!");box.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);box.setButtonText(QMessageBox::Ok, QString("yes"));box.setButtonText(QMessageBox::Cancel, QString("cancel"));box.exec();this->show();}	}void Dialog_login::path_deploy_cmBox_switch()
{if (ui->path_deploy_cmBox->currentText() == QString::fromLocal8Bit("生产现场")){path_deploy = "beijing";}else if (ui->path_deploy_cmBox->currentText() == QString::fromLocal8Bit("程序调试")){path_deploy = "local";}
}

        下方是dialog_login​​​​​​​.h文件:这里主要做了槽函数path_deploy_cmBox_switch()和函数on_login_ok_Btn_clicked()的声明。

#ifndef DIALOG_LOGIN_H
#define DIALOG_LOGIN_H
#include "ui_dialog_login.h"#include <QDialog>
#include <QAbstractButton>
#include <QPushButton>
#include "mainwindow.h"
#include"ui_mainwindow.h"namespace Ui {class Dialog_login;}class Dialog_login : public QDialog
{Q_OBJECTpublic:explicit Dialog_login(QWidget *parent = 0);~Dialog_login();private slots:void on_login_ok_Btn_clicked();void path_deploy_cmBox_switch();signals:/*** 信号必须要signals关键字来声明* 信号没有返回值, 但可以有参数* 信号就是函数的声明, 无需定义* 使用: emit mySignal();* 信号可以被重载*///void showmain();private:Ui::Dialog_login *ui;};#endif // DIALOG_LOGIN_H

        下方是main函数文件:这里用于给登陆界面命名,实现登陆界面显示功能等。

#include "mainwindow.h"
#include"ui_mainwindow.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QDesktopWidget>
#include "ui_dialog_login.h"
#include "dialog_login.h"
#include<string>
#include "spdlog/fmt/ostr.h"
#include"dialog_con.h"#include"ui_Dialog_con.h"#pragma comment(lib , "DbgHelp.lib")#include <Windows.h>
#include <DbgHelp.h>
#include <QString>
#include <QMessageBox>
#include <QDateTime>//程式异常捕获
LONG CreateCrashHandler(EXCEPTION_POINTERS *pException) {//创建 Dump 文件QDateTime CurDTime = QDateTime::currentDateTime();QString current_date = CurDTime.toString("yyyy_MM_dd_hh_mm_ss");//dmp文件的命名QString dumpText = "Dump_" + current_date + ".dmp";HANDLE hDumpFile = CreateFile((LPCWSTR)dumpText.utf16(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (hDumpFile != INVALID_HANDLE_VALUE) {//Dump信息MINIDUMP_EXCEPTION_INFORMATION dumpInfo;dumpInfo.ExceptionPointers = pException;dumpInfo.ThreadId = GetCurrentThreadId();dumpInfo.ClientPointers = TRUE;//写入Dump文件内容MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);}//这里弹出一个错误对话框并退出程序EXCEPTION_RECORD* record = pException->ExceptionRecord;QString errCode(QString::number(record->ExceptionCode, 16)), errAdr(QString::number((uint)record->ExceptionAddress, 16)), errMod;QMessageBox::critical(NULL, QString::fromLocal8Bit("程序退出错误"), QString::fromLocal8Bit("<FONT size=4><div><b>对于发生的程序退出错误,表示诚挚的歉意,请根据错误信息和跟踪dump文件分析退出原因</b><br/></div>") +QString::fromLocal8Bit("<div>错误代码:%1</div><div>错误地址:%2</div></FONT>").arg(errCode).arg(errAdr),QMessageBox::Ok);return EXCEPTION_EXECUTE_HANDLER;
}int main(int argc, char *argv[])
{QApplication a(argc, argv);//获取系统编码QTextCodec *codec = QTextCodec::codecForLocale();QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());//注冊异常捕获函数SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)CreateCrashHandler);Dialog_login f0;f0.setWindowTitle(QString::fromLocal8Bit("主系统"));f0.show();return a.exec();
}

总结

        经过上述过程,便完成了登陆界面设计。在C++中设计系统登录界面通过QT框架来实现,通过信号与槽机制实现用户交互功能,同时可以利用QT的丰富功能来实现界面美化和多语言支持。

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

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

相关文章

Centos8操作系统安装mysql5.7版本以及报错解决

目录 一、卸载MySql 1.首先查看已安装的mysql 2.逐个或者执行一下命令统一卸载掉 注意&#xff1a; 3. 卸载其他相关文件 二、安装MySql 1.安装mysql的rpm源 2.安装MySql 如果遇到以下错误&#xff1a; 问题一: 解决方法&#xff1a; 问题二、 解决方法&#xff1…

C语言面试题之相交链表

相交链表 实例要求 1、给定两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。2、如果两个链表不存在相交节点&#xff0c;返回 null 。示例&#xff1a; 实例分析 可以使用两种方法&#xff1a;哈希表方法和双指针方法。哈希表方法…

【分布式 | 第四篇】限流算法实现方案

文章目录 4.限流算法4.1计算器4.2漏桶算法4.3令牌桶限流 4.限流算法 4.1计算器 计数器比较简单粗暴&#xff0c;比如我们要限制1s能够通过的请求数实现的思路就是从第一个请求进来开始计时&#xff0c;在接下来的1s内&#xff0c;每个请求进来请求数就1&#xff0c;超过最大请…

删除二叉搜索树中的节点

题目链接 删除二叉搜索树中的节点 题目描述 注意点 节点值唯一root 是合法的二叉搜索树节点数的范围 [0, 10000] 解答思路 可以根据二叉搜索树的性质找到要删除的节点&#xff0c;关键是删除节点后怎么重新构建成一棵新的二叉搜索树首先要找到的是删除节点node的父节点nod…

微信小程序:9.小程序配置

全局配置文件 小程序根目录下的app.json文件是小程序的全局配置文件。 常用的配置文件如下: pages 记录当前小程序所有的页面存放路径信息 window 全局设置小程序窗口外观 tabBar 设置小程序底部的tabBar效果 style 是否启用新版style 小程序窗口的组成部分 了解windo节点常…

场景文本检测识别学习 day07(BERT论文精读)

BERT 在CV领域&#xff0c;可以通过训练一个大的CNN模型作为预训练模型&#xff0c;来帮助其他任务提高各自模型的性能&#xff0c;但是在NLP领域&#xff0c;没有这样的模型&#xff0c;而BERT的提出&#xff0c;解决了这个问题BERT和GPT、ELMO的区别&#xff1a; BERT是用来…

微信收款码0.2费率开通

很多人想申请低手续费率的收款码不知从何下手&#xff0c;在参考了大量博客教学之后&#xff0c;终于搞懂了详细流程以及注意事项。在此记录一下。我申请的是一个只需要0.2%费率的微信收款码&#xff0c;申请时间是2022年2月12日。申请之前只需要准备营业执照和法人身份z&#…

【iconv】Linux c++ 中文字符串转十六进制 GBK 编码/内码

文章目录 问题描述c 代码CMakeLists.txt参考链接 问题描述 Linux 系统默认使用的是 UTF-8 编码&#xff0c;并且 c 中没有标准库可以直接将中文字符转为 GBK 编码/内码。因此需要借助 iconv 库来实现。 在实现代码之前&#xff0c;可以在一下在线工具网站进行中文字符到各个编…

​可视化大屏C位图:园区鸟瞰

将园区鸟瞰图作为可视化大屏设计的焦点图有以下几个好处&#xff1a; 提供全局视图&#xff1a;园区鸟瞰图可以展示整个园区的布局和结构&#xff0c;提供全局视图。这对于大型园区或复杂的场所来说尤为重要&#xff0c;用户可以一目了然地了解整个园区的规模、分布和关联关系…

使用新版ESLint,搭配Prettier使用的配置方式

概述 ESLint重大更新(9.0.0版本)后,将不再支持非扁平化配置文件,并且移除了与Prettier冲突的规则,也就是说与Prettier搭配使用,不再需要使用插件“eslint-config-prettier”来处理冲突问题。 注:使用新版的前提条件是Node.js版本必须是18.18.0、20.9.0,或者是>=21.1…

ESP-IDF编译系统详解(1)

接前一篇文章&#xff1a;VSCode ESP-IDF安装与配置全过程 本文内容主要参考&#xff1a; 《ESP32-C3物联网工程开发实战》 —— 乐鑫科技 编著 特此致谢&#xff01; 前文已经详述了ESP-IDF开发环境的搭建&#xff0c;包括ESP-IDF的下载与安装完整流程&#xff0c;以及VSCo…

怎么排查K8S容器当中的Java程序内存泄露问题

今天早上发现生产线其中的一个服务在凌晨的时候突然重启了&#xff0c;内存突然从1G升到1.8G&#xff0c;CPU使用量从0.1升到了0.28&#xff0c;说明在这个时间点&#xff0c;内存突增达到了限额以上&#xff0c;服务重启了。因为这个服务布署了多节点&#xff0c;这次重启对业…

【springboot整合redis】异常处理

这个问题是在使用springboot整合redis时&#xff0c;创建好工程后&#xff0c;测试时所产生的 报错&#xff1a; org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: NOAUTH A…

共享购:融合社交分享与消费返利的创新电商模式

共享购电商模式是一种独特的商业模式&#xff0c;巧妙地将社交分享与消费返利结合&#xff0c;让消费者在购物的同时&#xff0c;也能通过平台资产奖励实现价值的双重增长。该平台资产体系主要由共享值和共享积分两大要素构成&#xff0c;共同构建了一个充满活力的电商生态系统…

巴特沃斯滤波原理及代码实现(matlab详细过程版)

目录 一、算法原理1、原理概述2、参考文献 二、代码实现三、结果展示 本文由CSDN点云侠原创&#xff0c;原文链接。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、原理概述 巴特沃斯滤波器&#xff08;Butterworth filt…

SQLite运行时可加载扩展(三十五)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite轻量级会话扩展&#xff08;三十四&#xff09; 下一篇:SQLite的DBSTAT 虚拟表&#xff08;三十六) 1. 概述 SQLite 能够在运行时加载扩展&#xff08;包括新的应用程序定义的 SQL 函数、整理序列、虚拟表和 VFS&…

Mysql-主从复制理解

环境&#xff1a;mysql&#xff0c;主从复制&#xff0c;必须有2个mysql实例&#xff0c;也就是说可以在一台电脑上安装2个msyql&#xff0c;或者2台服务器&#xff0c;一个主服务器&#xff0c;一个从服务器 在实际的生产中&#xff0c;为了解决Mysql的单点故障已经提高MySQL的…

Tomcat安装和配置以及多实例部署(附脚本)

TOMCAT详细部署 Tomcat服务器简介核心组件Tomcat 各组件及关系工作流程 Tomcat server.xml 配置详解serverserviceConnectorEngineHostContextValve 阀门 Tomcat部署与安装部署脚本主要目录说明 Tomcat多实例部署扩展和优化 Tomcat 的 catalina.sh 文件以调整 JVM 参数 Tomcat服…

前端工程化Vue使用Node.js设置国内高速npm镜像源(踩坑记录版)

前端工程化Vue使用Node.js设置国内高速npm镜像源&#xff08;踩坑记录版&#xff09; 此篇仅为踩坑记录&#xff0c;并未成功更换高速镜像源&#xff0c;实际解决方法见文末跳转链接。 1.自身源镜像 自身镜像源创建Vue项目下载速度感人 2.更改镜像源 2.1 通过命令行配置 前提…

K8s容器部署maven项目

最近在整一整套devops自动化持续集成的东西&#xff0c;一开始就做好了踩坑的准备。 failed to verify certificate: x509: certificate signed by unknown authority 今天在执行kubectl get nodes的时候报的证书验证问题&#xff0c;看了一圈首次搭建k8s的都是高频出现的问题…