QT作业3

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

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

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

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

代码:

主函数文件:

#include "widget.h"
#include "loginsuccess.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    //登录成功界面
    loginsuccess s;
    //连接信号与槽
    QObject::connect(&w,&Widget::my_jump,&s,&loginsuccess::my_show);
    return a.exec();
}

登录界面源文件:

#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);
    this->setWindowIcon(QIcon(":/Logo/1.jpg"));

}

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

//cancel按钮槽函数
void Widget::on_pushButton_2_clicked()
{
    //消息对话框( 基于属性版本)
    QMessageBox msg(QMessageBox::Question,"问题窗口","请确定是否取消登录",QMessageBox::Yes | QMessageBox::No,this);
    //调用exec()弹出对话框
    int ret = msg.exec();
    if(ret == QMessageBox::Yes){
        //关闭当前窗口
        this->close();
    }
}

void Widget::on_pushButton_clicked()
{
    //消息对话框(基于静态成员函数版本)
    if(ui->lineEdit->text() == "admin" && ui->lineEdit_2->text() == "123456"){
        int ret = QMessageBox::information(this,"信息窗口","登录成功",QMessageBox::Yes);
        if(ret == QMessageBox::Yes){
            //关闭当前窗口
            this->close();
            emit my_jump();
        }
    }else{
        //消息对话框(基于静态成员函数版本)
        int ret = QMessageBox::critical(this,"错误窗口","账号与密码不匹配,是否重新登录",QMessageBox::Yes | QMessageBox::No);
        if(ret == QMessageBox::No){
            //关闭当前窗口
            this->close();
        }
    }
}

登录成功界面源文件:

#include "loginsuccess.h"
#include "ui_loginsuccess.h"

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

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

//自定义槽函数实现
void loginsuccess::my_show()
{
    //展示当前窗口
    this->show();
}

登录界面头文件:

#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_jump();  //自定义信号函数

private slots:
    void on_pushButton_2_clicked();

    void on_pushButton_clicked();

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

登录成功界面头文件:

#ifndef LOGINSUCCESS_H
#define LOGINSUCCESS_H

#include <QWidget>
#include <QMessageBox>

namespace Ui {
class loginsuccess;
}

class loginsuccess : public QWidget
{
    Q_OBJECT

public:
    explicit loginsuccess(QWidget *parent = nullptr);
    ~loginsuccess();

public slots:
    void my_show();  //自定义槽函数

private:
    Ui::loginsuccess *ui;
};

#endif // LOGINSUCCESS_H

登录界面ui设计编辑样式表:

*{
	background-color: rgb(255, 255, 255);
}

QFrame#frame{
	border-image: url(:/Logo/wanXia.jpg);
	border-radius:30px;
}
#frame_2{
	background-color: rgba(132, 132, 132, 120);
	border-radius:30px;
}

QLabel#label{
	background-color: rgba(116, 116, 116, 130);
	border-radius:30px;
}
#label_2{
	background:transparent;	
	color: rgba(255, 255, 255, 120);
}
#label_3{
	background:transparent;	
	color: rgba(255, 255, 255, 120);
	font: 9pt "仿宋";
}

QLineEdit{
	background:transparent;
	border:none;
	border-bottom:1px solid rgba(255, 255, 255, 150);
	
	font: 14pt "仿宋";
	color: rgba(255, 255, 255, 120);
}

QPushButton#pushButton{
	border-radius:10px;
	
	color: rgba(255, 255, 255, 180);
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(242, 198, 208, 255), stop:1 rgba(255, 255, 215, 220));
	font: 14pt "仿宋";
}
QPushButton#pushButton:hover{
	border-radius:10px;
	
	color: rgba(255, 255, 255, 180);
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(242, 168, 208, 255), stop:1 rgba(255, 255, 215, 220));
	font: 14pt "仿宋";
}
QPushButton#pushButton:pressed{
	border-radius:10px;
	
	color: rgba(255, 255, 255, 180);
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(242, 198, 208, 255), stop:1 rgba(255, 255, 215, 220));
	font: 14pt "仿宋";
	padding-top:5px;
	padding-left:5px;
}

#pushButton_2{
	border-radius:10px;
	
	color: rgba(255, 255, 255, 180);
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(242, 198, 208, 255), stop:1 rgba(255, 255, 215, 220));
	font: 14pt "仿宋";
}
#pushButton_2:hover{
	border-radius:10px;
	
	color: rgba(255, 255, 255, 180);
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(242, 168, 208, 255), stop:1 rgba(255, 255, 215, 220));
	font: 14pt "仿宋";
}
#pushButton_2:pressed{
	border-radius:10px;
	
	color: rgba(255, 255, 255, 180);
	background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(242, 198, 208, 255), stop:1 rgba(255, 255, 215, 220));
	font: 14pt "仿宋";
	padding-top:5px;
	padding-left:5px;
}

运行结果:

取消功能:

登录失败:

登录成功:

思维导图:

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

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

相关文章

鸿蒙小车之多任务调度实验

说到鸿蒙我们都会想到华为mate60&#xff1a;遥遥领先&#xff01;我们一直领先&#xff01; 我们这个小车也是采用的是鸿蒙操作系统&#xff0c;学习鸿蒙小车&#xff0c;让你遥遥领先于你的同学。 文章目录 前言一、什么是任务&#xff1f;为什么要有任务二、任务的状态三、任…

​报名参加openGauss训练营,开启数据库之旅!

一直以来,数据库被誉为基础软件“皇冠上的明珠”、技术的“大动脉”。也许我们对它的名字略感陌生,但我们生活的方方面面却都无法离不开它,无论是抢票、网购还是线上点餐等,几乎都得益于数据库的支持,它是支撑各类应用软件运行的基础。 openGauss是一款开源关系型数据库管理系…

Duplicate keys detected: This may cause an update error.【Vue遍历渲染报错的解决】

今天在写项目时&#xff0c;写到一个嵌套评论的遍历时&#xff0c;控制台出现了一个报错信息&#xff0c;但是并不影响页面的渲染&#xff0c;然后一看这个错的原因是 key值重复&#xff0c;那么问题的解决方式就很简单了。&#xff08;vue for循环读取key值时&#xff0c; key…

Java基础面试题小结

基础面试题 Java语言简介 Java是1995年由sun公司推出的一门高级语言&#xff0c;该语言具备如下特点: 简单易学&#xff0c;相较于C语言和C&#xff0c;没有指针的概念&#xff0c;所以操作和使用是会相对容易一些。平台无关性&#xff0c;即Java程序可以通过Java虚拟机在不…

使用Vue3+Typescript手写一个日历签到组件

设计理念 昨天写了个简单美观的日历签到组件&#xff0c;使用的是Vue3TypeScript&#xff0c;大概逻辑是先找到本月份第一天是周几&#xff0c;然后开始填充月份日期&#xff1a;weeksArray:[[]]:之后渲染到表格中&#xff0c;对于签到事件触发则先判断是否是今天且还未没有签…

【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式

pytorch 官方文档 Tensor基础&#xff0c;数据类型&#xff0c;及其多种创建方式 1. 创建 Creating Tensor&#xff1a; 标量、向量、矩阵、tensor2. 三种方法可以创建张量&#xff0c;一是通过列表(list)&#xff0c;二是通过元组(tuple)&#xff0c;三是通过Numpy的数组(arra…

Python将列表中的数据写入csv并正确解析出来

用Python做数据处理常常会将数据写到文件中进行保存&#xff0c;又或将保存在文件中的数据读出来进行使用。通过Python将列表中的数据写入到csv文件中很多人都会&#xff0c;可以通过Python直接写文件或借助pandas很方便的实现将列表中的数据写入到csv文件中&#xff0c;但是写…

苹果计划将全球1/4的IPhone产能转移至印度

KlipC报道&#xff1a;据相关人士报道&#xff0c;苹果希望在未来2到3年内每年在印度生产超过5000万部iphone&#xff0c;要是该计划得以实现&#xff0c;印度将占领全球iPhone产量的四分之一。 KlipC的分析师Alex Su表示&#xff1a;“此次iPhone15推出是苹果印度制造计划的一…

Initial用法-FPGA入门3

Initial是什么 FPGA Initial是一种在FPGA中进行初始化的方法。在FPGA设备上&#xff0c;初始值决定了逻辑门的状态和寄存器的初始值。FPGA Initial可以通过设置初始值来控制电路在上电后的初始状态。 Initial的作用 2.1&#xff0c;控制电路启动时的初始状态 通过设置FPGA Ini…

XXE利用的工作原理,利用方法及防御的案例讲解

XXE&#xff08;XML外部实体注入&#xff09;利用是一种网络安全攻击手段&#xff0c;其中攻击者利用XML解析器处理外部实体的方式中的漏洞。这种攻击主要针对的是那些使用XML来处理数据的应用程序&#xff0c;尤其是当这些应用程序没有正确限制外部实体的处理时。通过XXE利用&…

小程序接口OK,桌面调试接口不行

手机小程序OK,桌面版出现问题&#xff1b; 环境&#xff1a;iis反向url的tomcat服务&#xff0c;提供接口。 该接口post了一个很大的数组&#xff0c;处理时间比较久。 1&#xff09;桌面调试出现错误,提示 用apipost调用接口同样出错, 502 - Web 服务器在作为网关或代理服…

VS2022配置C++ 20解决import std报错

C 20新特征支持用import std来导入std模块&#xff0c;如下&#xff1a; 配置时主要有两个步骤&#xff1a; &#xff08;1&#xff09;项目--属性--常规--C语言标准--预览 - 最新 C 工作草案中的功能 (/std:clatest) 注意选择ISO C20 标准 (/std:c20)也不能正常使用&#xf…

一个程序,实现随机随机数据生成自由

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 发现又是好久没有和大家见面了&#xff0c;先给大家分享一下最近的研究方向和成果&#xff1a; 最近接到的…

GEM5 McPAT NoC教程: xml设置汇总-2023版

简介 McPAT的xml有一些参数需要设置&#xff0c;noc的部分很多Gem5ToMcpatparser没有设置&#xff0c;也没有给出如何设置的条件。尤其是和活动相关的total access&#xff0c;不知道具体怎么设置&#xff0c;也不知道如何从gem5 stats.txt中导出。本文提供了2023年的收集到ge…

听GPT 讲Rust源代码--src/tools(14)

File: rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/cfg/src/lib.rs这个文件是Rust语言分析器&#xff08;Rust Analyzer&#xff09;的一部分&#xff0c;用于处理和管理条件编译指令&#xff08;Cond…

debug点f8step over会进入class文件

File->settings->Bulid.Executiong.Deployment->Debugger->Stepping 取消如图对钩即可

python 实现PC、app自动化全过程(包括CI\CD)

python main.py allure generate C:\devlopePath\new_nergeryApp_auto\reports -o C:\devlopePath\new_nergeryApp_auto\result --clean allure open C:\devlopePath\new_nergeryApp_auto\result

Qt实现中英文切换步骤

本demo的开发环境是vs2015qt5.9.4。以下是已有的工程下&#xff0c;增加中英文切换的功能&#xff08;当然还可以多语言切换&#xff09;。 1&#xff0c;选中工程&#xff08;记得一定要选中&#xff0c;否则Create New Translation File 是灰色的&#xff09;。点击Create N…

2024中国国际大数据产业博览会年度主题征集公告

2024中国国际大数据产业博览会年度主题征集公告 中国国际大数据产业博览会&#xff08;以下简称数博会&#xff09;&#xff0c;是全球首个以大数据为主题的国家级博览会&#xff0c;由国家发展和改革委员会、工业和信息化部、国家互联网信息办公室和贵州省人民政府共同主办&am…

用代码写uml并在线生成uml图

可以用PlantUml写uml,并在线生成uml图。 startuml start:登录系统; if (用户名和密码正确?) then (yes):进入系统首页;:展示主菜单; else (no):显示登录错误;stop endif:选择模块; partition "课程信息" {:查看课程列表;:查看课程详情; } partition "课程签到…