2.22 Qt day3 多界面跳转+qss登录界面优化+发布软件+对话框

思维导图:

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面

如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面

如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

要求:基于属性版和基于静态成员函数版至少各用一个

widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

signals:
    void my_signal();
private slots:
    void on_logBtn_clicked();
    void clicked();
    void on_cancelBtn_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

second.h:

#ifndef SECOND_H
#define SECOND_H

#include <QWidget>

namespace Ui {
class Second;
}

class Second : public QWidget
{
    Q_OBJECT

public slots:
    void my_slot();
public:
    explicit Second(QWidget *parent = nullptr);
    ~Second();

private:
    Ui::Second *ui;
};

#endif // SECOND_H

widget.cpp:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);//去掉窗口标题
    this->setAttribute(Qt::WA_TranslucentBackground);//去掉空白
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_logBtn_clicked()
{
    //获取行编辑器userNameEdit和passwdEdit的内容
    //并和账号admin、密码123456进行比对
    if(ui->userNameEdit->text()=="admin"&&ui->passwdEdit->text()=="123456")
    {
        //弹出消息对话框
        QMessageBox msg(QMessageBox::Information,//对话框图标
                        "提示",//对话框标题
                        "登录成功",//提示文本
                        QMessageBox::Yes,//提供的按钮
                        this);//
        //调用exec弹出对话框
        msg.exec();
        //跳转到第二个界面
        my_signal();
        //关闭窗口
        this->close();
    }
    else
    {
        //弹出消息对话框
        QMessageBox msg(QMessageBox::Critical,//对话框图标
                        "错误",//对话框标题
                        "账号和密码不匹配,是否重新登录",//提示文本
                        QMessageBox::Yes|QMessageBox::No,//提供的按钮
                        this);//指定父组件
        //调用exec弹出对话框
        int ret=msg.exec();
        //根据用户的选择 执行不同的功能
        if(ret==QMessageBox::Yes)
        {
            //清空行编辑器passwdEditd的内容
            ui->passwdEdit->clear();
        }
        else if(ret==QMessageBox::No)
        {
            //关闭窗口
            this->close();
        }
    }
}


void Widget::clicked()
{
    //触发信号
    emit this->my_signal();
}
//取消按钮槽函数
void Widget::on_cancelBtn_clicked()
{
    int ret = QMessageBox::question(//函数名
        this, //指定父组件
        "", //标题
       "您是否确定要退出登录?", //文本
         QMessageBox::Yes | QMessageBox::No//提供按钮
        );
    //判断用户选中的按钮
    if(ret == QMessageBox::Yes)
    {
       //关闭登录界面,
        this->close();
    }
}

second.cpp:

#include "second.h"
#include "ui_second.h"

Second::Second(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Second)
{
    ui->setupUi(this);

}

Second::~Second()
{
    delete ui;
}
void Second::my_slot()
{
    this->show();
}

widget.ui:

*{
	background-color: rgb(255, 255, 255);
}
QFrame#frame{
	border-image: url(:/Logo/shanChuan.jpg);border-radius:10px;
}
#frame_2{
	background-color: rgba(157, 157, 157, 120);border-radius:10px;
}
QLabel#label{
	background-color: rgba(94, 94, 94, 130);border-radius:10px;
}
#label_2{
	font: 18pt "等线";
	background:transparent;/*背景完全透明*/
	color: rgba(255, 255, 255, 120);
}
#label_3{
	font: 8pt "等线";
	background:transparent;/*背景完全透明*/
	color: rgba(255, 255, 255, 120);
}
QLineEdit{
	background:transparent;border:none;/*无边框*/
	border-bottom:1px solid rgba(255, 255, 255, 120);
	font: 16pt "仿宋";
	color: rgba(255, 255, 255, 120);
}
QPushButton{
	border-radius:10px;
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(90, 120, 221, 255), stop:1 rgba(255, 255, 255, 255));
	font: 18pt "仿宋";
	color: rgba(255, 255, 255, 120);
}
QPushButton:hover{/*鼠标移动*/
	border-radius:10px;
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(48, 120, 221, 255), stop:1 rgba(255, 255, 255, 255));
	font: 18pt "仿宋";
	color: rgba(255, 255, 255, 120);
}
QPushButton:pressed{/*鼠标按下*/
	border-radius:10px;
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(90, 120, 221, 255), stop:1 rgba(255, 255, 255, 255));
	font: 18pt "仿宋";
	color: rgba(255, 255, 255, 120);
	padding-top:5px;
	padding-left:5px;
}

结果:

1.点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面

2.如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面

3.如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我们在SqlSugar开发框架中,用到的一些设计模式

我们在《SqlSugar开发框架》中&#xff0c;有时候都会根据一些需要引入一些设计模式&#xff0c;主要的目的是为了解决问题提供便利和代码重用等目的。而不是为用而用&#xff0c;我们的目的是解决问题&#xff0c;并在一定的场景下以水到渠成的方式处理。不过引入任何的设计模…

【教3妹学编程-算法题】匹配模式数组的子数组数目 I

3妹&#xff1a;2哥2哥&#xff0c;你有没有看到上海女老师出轨男学生的瓜啊。 2哥 : 看到 了&#xff0c;真的是太毁三观了&#xff01; 3妹&#xff1a;是啊&#xff0c; 老师本是教书育人的职业&#xff0c;明确规定不能和学生谈恋爱啊&#xff0c;更何况是出轨。 2哥 : 是啊…

HarmonyOS—LocalStorage:页面级UI状态存储

LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内&#xff0c;在页面间共享状态。 本文仅介绍LocalStorage使用场景和相关的装饰器&#xff1a;LocalStorageProp和LocalS…

大保司保费贵,是否物有所值?

《大保司保费贵&#xff0c;是否物有所值》 这是罗师兄的原创文章 预计8-9分钟读完 作者&#xff1a;罗师兄 微信号&#xff1a;luoyun515 当我们想要买一份重疾险、储蓄险等长期险时&#xff0c; 我们会发现&#xff0c;同样的保障责任和保额&#xff0c; 不同保险公司的…

mac苹果电脑系统最好用的清理软件CleanMyMac2024功能介绍及如何激活解锁许可证

CleanMyMac X的界面设计简洁大气&#xff0c;为用户提供了直观且易于操作的使用体验。 布局清晰&#xff1a;界面布局非常明朗&#xff0c;左侧是功能栏&#xff0c;右侧则是信息界面。这种布局方式使得用户能够迅速找到所需的功能选项&#xff0c;提高了操作效率。色彩搭配&a…

Flutter常用命令,持续更新

目录 前言 Flutter 常用命令 Dart 常用命令 adb 常用命令&#xff08;用于 Android 开发&#xff09; 前言 当在开发Flutter项目时&#xff0c;熟悉一些常用的命令是非常重要的。这些命令可以帮助你执行各种任务&#xff0c;从构建应用程序到调试和测试。以下是一些Flutte…

亿道丨三防平板丨加固平板丨三防加固平板丨改善资产管理

库存资产管理中最重要的部分之一是准确性&#xff1b;过时的库存管理技术会增加运输过程中人为错误、物品丢失或纸张损坏的风险。如今随着三防平板电脑的广泛使用&#xff0c;库存管理也迎来了好帮手&#xff0c;通过使用三防平板电脑能够确保库存管理、数据存储和记录保存的准…

Hive【内部表、外部表、临时表、分区表、分桶表】【总结】

目录 Hive的物种表结构特性 一、内部表 建表 使用场景 二、外部表 建表:关键词【EXTERNAL】 场景&#xff1a; 外部表与内部表可互相转换 三、临时表 建表 临时表横向对比​编辑 四、分区表 建表&#xff1a;关键字【PARTITIONED BY】 场景&#xff1a; 五、分桶表 …

pip安装依赖环境出现的问题

一、error: subprocess-exited-with-error! 1、前期一直百度的错误如标题所示&#xff0c;得到的方案如下&#xff1a;&#xff08;但没解决问题&#xff09; &#xff08;1&#xff09;升级setuptools库&#xff0c;或者降低固定版本 //升级setuptools库&#xff0c;或者降低…

Spark之【基础介绍】

Spark最初是由美国伯克利大学AMP实验室在2009年开发&#xff0c;Spark时基于内存计算的大数据并行计算框架&#xff0c;可以用于构建大型的、低延迟的数据分析应用程序。 Spark是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台之一。 Spark的特点 运行速度快 &am…

L2 清点代码库----PTA(疑问)

上图转自新浪微博&#xff1a;“阿里代码库有几亿行代码&#xff0c;但其中有很多功能重复的代码&#xff0c;比如单单快排就被重写了几百遍。请设计一个程序&#xff0c;能够将代码库中所有功能重复的代码找出。各位大佬有啥想法&#xff0c;我当时就懵了&#xff0c;然后就挂…

用Python插入页码到PDF文档

页码是许多类型文件中的重要内容&#xff0c;它能方便读者在文档中的导航。在创建PDF文档时&#xff0c;添加页码对于组织和引用内容特别有用。在本文中&#xff0c;我们将探讨如何利用Python程序高效地插入页码到PDF文档中&#xff0c;简化工作流程并创建出精美、结构合理的PD…

【selenium】执行 Javascript 脚本 滚动、元素的特殊操作等

某些特殊情况下&#xff0c;使用selenium的api无法操作页面元素&#xff0c;点击、滚动实现的某些功能&#xff0c;可以考虑通过执行js来完成。 为什么不用js写自动化&#xff1f;——selenium第一版是js写的&#xff0c;但js兼容性存在问题&#xff0c;所以引入webdriver 现在…

Vue 中 onclick和@click区别

文章目录 一、直接上结论二、验证代码&#xff0c;可直接运行三、点击结果 一、直接上结论 onclick 只能触发 js的原生方法&#xff0c;不能触发vue的封装方法click 只能触发vue的封装方法&#xff0c;不能触发js的原生方法 二、验证代码&#xff0c;可直接运行 <!DOCTYP…

LiveNVR监控流媒体Onvif/RTSP功能-支持Ehome转GB28181协议isup转GB28181支持海康摄像头海康NVR通过协议ISUP协议接入

LiveNVR支持Ehome转GB28181协议isup转GB28181支持海康摄像头海康NVR通过协议ISUP协议接入 1、海康 ISUP 接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例 3、通道配置3.1、直播流接入类型 海康ISUP3.2、海康 ISUP 设备ID3.3、启用保存3.4、接入成…

yolov5 车牌识别(C#\C++\Python三合一)

本系列给大伙分享一个博主自己利用yolov5实现的一种车牌识别算法&#xff0c;训练样本都是博主自己手动拍照收集的&#xff0c;所以样本数量并不是很完整&#xff0c;目前主要实现的功能就针对绿牌车和蓝牌车的车牌识别&#xff0c;除了能识别出车牌字符外&#xff0c;还能区别…

利用Ubuntu22.04启动U盘对电脑磁盘进行格式化

概要&#xff1a; 本篇演示利用Ubuntu22.04启动U盘的Try Ubuntu模式对电脑磁盘进行格式化 一、说明 1、电脑 笔者的电脑品牌是acer(宏碁/宏基) 开机按F2进入BIOS 开机按F12进入Boot Manager 2、Ubuntu22.04启动U盘 制作方法参考笔者的文章&#xff1a; Ubuntu制作Ubun…

Microsoft的PromptBench可以做啥?

目录 PromptBench简介 PromptBench的快速模型性能评估 PromptBench数据集介绍 PromptBench模型介绍 PromptBench模型加载遇到的问题 第一次在M1 Mac上加载模型 vicuna和llama系列模型 PromptBench各个模型加载情况总结 PromptBench的Prompt快速工程 chain of thought…

C++ 文件操作-文本文件-读取和打开文件方法详解

读文件步骤 #include <iostream> using namespace std; #include <fstream> #include <string> //文本文件 读文件void test(){// 1 包含头文件// 2 创建流对象ifstream ifs;// 3 打开文件 并且判断是否打开成功ifs.open("table.txt",ios::in); //…