【嵌入式——QT】Splash与登录窗口

一般的大型应用程序在启动时会显示一个启动画面,即Splash窗口,Splash窗口是一个无边对话框,一般显示一个图片,展示软件信息,Splash窗口显示时,程序在后台做一些比较耗时的启动准备工作,Splash窗口显示一段时间后自动关闭,然后软件的主窗口显示出来,Qt有一个QSplashScreen类可以实现Splash窗口的功能,它提供了载入图片,自动设置窗口无边框效果等功能。

//设置为SplashScreen
this->setWindowFlags(Qt::SplashScreen);

图示
在这里插入图片描述

代码示例

SplashDialog.h

#ifndef SPLASHDIALOG_H
#define SPLASHDIALOG_H#include <QDialog>
#include <QMouseEvent>
namespace Ui
{class SplashDialog;
}class SplashDialog : public QDialog
{Q_OBJECTpublic:explicit SplashDialog(QWidget* parent = nullptr);~SplashDialog();//鼠标按压事件void mousePressEvent(QMouseEvent* event) override;//鼠标移动事件void mouseMoveEvent(QMouseEvent* event) override;//鼠标释放事件void mouseReleaseEvent(QMouseEvent* event) override;private slots:void on_pushButtonOk_clicked();void on_pushButtonCancel_clicked();private:Ui::SplashDialog* ui;//窗口是否在鼠标操作下移动bool m_moving= false;//上一次鼠标位置QPoint m_lastPos;//用户名QString m_user = "user";//密码QString m_pswd = "12345";//试错次数int m_tryCount = 0;//读取设置void readSettings();//写入设置void writeSettings();//加密QString encrypt(const QString& str);};#endif // SPLASHDIALOG_H

SplashDialog.cpp

#include "SplashDialog.h"
#include "ui_SplashDialog.h"
#include <QSettings>
#include <QCryptographicHash>
#include <QMessageBox>
SplashDialog::SplashDialog(QWidget* parent): QDialog(parent), ui(new Ui::SplashDialog)
{ui->setupUi(this);//设置密码为输入模式ui->lineEditPassword->setEchoMode(QLineEdit::Password);//设置关闭时删除this->setAttribute(Qt::WA_DeleteOnClose);//设置为SplashScreenthis->setWindowFlags(Qt::SplashScreen);readSettings();
}SplashDialog::~SplashDialog()
{delete ui;
}void SplashDialog::mousePressEvent(QMouseEvent* event)
{if(event->button() == Qt::LeftButton) {m_moving = true;//记录下鼠标相对于窗口的位置m_lastPos = event->globalPos()-pos();}return QDialog::mousePressEvent(event);
}void SplashDialog::mouseMoveEvent(QMouseEvent* event)
{if(m_moving && (event->buttons() && Qt::LeftButton) &&(event->globalPos()-m_lastPos).manhattanLength() > QApplication::startDragDistance()) {move(event->globalPos()-m_lastPos);m_lastPos = event->globalPos()-pos();}return QDialog::mouseMoveEvent(event);
}void SplashDialog::mouseReleaseEvent(QMouseEvent* event)
{m_moving = false;
}void SplashDialog::readSettings()
{QString organization = "WWB-Qt";QString appName = "samp6_5";QSettings settings(organization, appName);bool saved = settings.value("saved", false).toBool();m_user = settings.value("UserName", "user").toString() ;QString defaultPswd = encrypt("12345");m_pswd = settings.value("Pswd", defaultPswd).toString();if(saved) {ui->lineEditUserName->setText(m_user);}ui->checkBox->setChecked(saved);
}void SplashDialog::writeSettings()
{QString organization = "WWB-Qt";QString appName = "samp6_5";QSettings settings(organization, appName);settings.setValue("UserName", m_user);settings.setValue("Pswd", m_pswd);settings.setValue("saved", ui->checkBox->isChecked());
}QString SplashDialog::encrypt(const QString& str)
{QByteArray btArray;btArray.append(str);QCryptographicHash hash(QCryptographicHash::Md5);hash.addData(btArray);QByteArray result = hash.result();return result.toHex();;
}void SplashDialog::on_pushButtonOk_clicked()
{QString userName = ui->lineEditUserName->text().trimmed();QString pswd = ui->lineEditPassword->text().trimmed();QString encrptyPwd = encrypt(pswd);if((userName == m_user) && (encrptyPwd == m_pswd)) {writeSettings();this->accept();} else {m_tryCount++;if(m_tryCount > 3) {QMessageBox::critical(this, u8"错误", u8"输入次数过多");this->reject();} else {QMessageBox::warning(this, u8"错误提示", u8"密码错误");}}
}void SplashDialog::on_pushButtonCancel_clicked()
{this->reject();
}

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

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

相关文章

Websocket在Asp.net webApi(.net framework)上的应用

之前在写看板部分的web api的时候&#xff0c;都是通过Ajax在规定时间内轮询调用web api&#xff0c;这样简单省事&#xff0c;但是当看板多了&#xff08;并发量上来&#xff09;以后&#xff0c;比较消耗服务器的性能&#xff0c;所以最近研究了websocket&#xff0c;希望使用…

【CSS面试题】外边距折叠的原因和解决

参考文章 什么时候出现外边距塌陷 外边距塌陷&#xff0c;也叫外边距折叠&#xff0c;在普通文档流中&#xff0c;在垂直方向上的2个或多个相邻的块级元素&#xff08;父子或者兄弟&#xff09;外边距合并成一个外边距的现象&#xff0c;不过只有上下外边距才会有塌陷&#x…

每日一题——LeetCode1668.最大重复字符串

方法一 includes()repeat()秒了 使用repeat()将word重复i次&#xff0c;看是否包含于sequence中&#xff0c;将最大的i赋值给k var maxRepeating function(sequence, word) {let k0for(let i1;i*word.length<sequence.length;i){if(sequence.includes(word.repeat(i))){k…

Python从0到100(三):Python中的变量介绍

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

CleanMyMac X4.15具有哪些功能和特点?

CleanMyMac X具有许多其他功能和特点&#xff0c;以下是一些主要亮点&#xff1a; 系统清理&#xff1a;它能够深入扫描macOS系统&#xff0c;识别并清除各种垃圾文件&#xff0c;如缓存、日志、无用的语言文件等。这不仅有助于释放硬盘空间&#xff0c;还可以提高系统的整体性…

基于51单片机超声波测距

目录 摘 要 2 ABSTRACT 3 目 录 4 1 绪论 1 1 概述 12 国内外发展现状 1 2 系统总体方案设计 21 设计要求 2 1&#xff09;可进行距离测量。 2 2&#xff09; 采用数码管显示距离数据。 2 3&#xff09; 可按键设置距离门限值 2 4&#xff09; 具有报警功能 22 方案选择 2 1 …

Python开源项目周排行 2024年第5周

Python 趋势周报&#xff0c;按周浏览往期 GitHub,Gitee 等最热门的Python开源项目&#xff0c;入选的项目主要参考GitHub Trending,部分参考了Gitee和其他。排名不分先后&#xff0c;都是当周相对热门的项目。 入选公式&#xff1d;70%GitHub Trending20%Gitee10%其他 关注微…

杠杆和保证金关系,很简单,众汇一个表格解决

很多投资者都能一眼就可以理清杠杆和保证金的关系&#xff0c;但是众汇外汇也看到很多交易届的新手&#xff0c;有时还浪费精力在杠杆和保证金的关系上&#xff0c;白白损失了许多盈利的机会&#xff0c;其实很简单&#xff0c;今天众汇就一个表格解决这个问题。 在使用表格之…

nacos安装与启动

下载nacos 选择Nacos 版本的原因主要是参考了官方的版本说明&#xff1a; 下载完毕后&#xff0c;会得到一个名称为nacos-server-xx.zip的文件&#xff0c;解压缩后的目录结构如下。 bin&#xff1a;存放启动和关闭Nacos Server的脚本文件。conf&#xff1a;Nacos Server的配…

javascript 版 WinMerge

WinMerge.html&#xff1a; <!DOCTYPE html> <html> <head><title>WinMerge</title><meta charset"UTF-8"> </head> <body> <h1>文件比较</h1> <form><label for"file1">旧版本…

自然语言处理(NLP)—— 词义消歧与词语相似性(Word similarity)

1. 词义消歧 1.1 词义消歧的概念 词义消歧&#xff08;Word Sense Disambiguation, WSD&#xff09;的概念及其在自然语言处理中的应用之一。词义消歧是确定一个词在特定语境下使用时所指的具体含义。 在提到的例子中&#xff0c;“Do you believe in clubs for young people?…

java跨平台原理,jdk/jre/jvm之间的关系

1 java基本认识 1.1 java语言 语言&#xff1a;人与人交流沟通的方式。比如&#xff0c;你好、hello等。 计算机语言&#xff1a;人与计算机之间进行信息交流的一种特殊方式。比如&#xff0c;Java语言、C语言、C等。 1.2 java的来源 Java 是由 Sun Microsystems 公司于 1…

状态机高阶讲解-03

402 00:17:30,860 --> 00:17:34,610 那首先要说在前面的&#xff0c;就是说 403 00:17:36,590 --> 00:17:39,770 这个状态机实际上已经是一种 404 00:17:42,060 --> 00:17:45,320 描述行为上的差别了 405 00:17:45,820 --> 00:17:47,860 就是说&#xff0c;实际…

SpringBoot中MD5使用

SpringBoot中MD5使用 新建md5类 public final class MD5 {public static String encrypt(String strSrc) {try {char[] hexChars {0, 1, 2, 3, 4, 5, 6, 7, 8,9, a, b, c, d, e, f};byte[] bytes strSrc.getBytes();MessageDigest md MessageDigest.getInstance("MD5…

组态软件基础知识

一、组态软件基础知识 1、概述 &#xff08;1&#xff09;、组态软件概念与产生背景 “组态”的概念是伴随着集散型控制系统&#xff08;Distributed Control System简称DCS&#xff09;的出现才开始被广大的生产过程自动化技术人员所熟知的。在工业控制技术的不断发展和应用…

HR人才测评,如何测评候选人的心理素质?

心理素质&#xff0c;指的是处于压力之下&#xff0c;其解决问题的能力、团队协作能力&#xff0c;事务处理的效率等是否保持稳定和高效。心理素质决定了员工在岗位上的适应能力&#xff0c;也是发展潜力的基础。 对于企业来说&#xff0c;心理素质好的员工&#xff0c;不仅是…

哪些泛域名ssl证书一年送一月

泛域名SSL数字证书&#xff0c;也称之为通配符SSL证书&#xff0c;是数字证书中比较特殊的产品。与传统的单域名SSL证书不同&#xff0c;泛域名SSL证书能够同时保护多个域名站点&#xff0c;只对域名站点的类型有限制——只能保护主域名以及主域名下的所有子域名站点。今天就随…

数据安全与销毁:数据销毁实践指南

数据销毁处理 为了满足合规要求及组织机构本身的业务发展需求&#xff0c;组织机构需要对数据进行销毁处理。因为数据销毁处理要求针对数据的内容进行清除和净化&#xff0c;以确保攻击者无法通过存储介质中的数据内容进行恶意恢复&#xff0c;从而造成严重的敏感信息泄露问题。…

【C++从0到王者】第五十二站:跳表

文章目录 一、什么是跳表二、skiplist的效率三、skiplist的实现 一、什么是跳表 skiplist本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树和哈希表的价值是一样的&#xff0c;可以作为key或者key/value的查找模型。 skiplist&#xff0c;…

V1.2基站设置IP及设置基站连接服务器

基站状态指示灯 基站正常连接上服务器&#xff0c;基站指示灯如下&#xff0c;第一个灯是电源指示灯常亮&#xff1b;第二个灯为运行指示灯&#xff0c;程序正常运行第二个灯一直闪烁&#xff1b;第三个灯为为网络指示灯&#xff0c;网络连接正常会常亮&#xff0c;网络不通或…