4.9QT

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

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

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

要求:基于属性版实现对话框的弹出

main.cpp

#include "widget.h"
#include "form.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    Form f;
    //连接窗口1的信号函数和窗口2打开的lambda函数
    Widget::connect(&w,&Widget::login,[&](){
        f.show();
    });

    return a.exec();
}

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);
    this->setWindowTitle("原神启动");
    this->setWindowIcon(QIcon(":/Logo/p.jpg"));
}

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

void Widget::on_pushButton_clicked()
{
    if(ui->lineEdit->text()=="admin"&&ui->lineEdit_2->text()=="123456"){
        QMessageBox msg(QMessageBox::Information,"登录","登陆成功",QMessageBox::Ok);
        int res=msg.exec();
        if(res==QMessageBox::Ok){//发射登陆成功信号,在main连接到窗口2
            emit login();
            this->close();
        }
    }else{
        QMessageBox msg2(QMessageBox::Warning,"登录","账号和密码不匹配",QMessageBox::Yes|QMessageBox::No);
        int res2=msg2.exec();
        if(res2==QMessageBox::No){
            this->close();
        }else{
            this->ui->lineEdit->clear();
            this->ui->lineEdit_2->clear();
        }
    }
}

void Widget::on_but2_clicked()
{
    QMessageBox msg(QMessageBox::Question,"取消","您是否确认要退出登录?",QMessageBox::Yes|QMessageBox::No);
    int res=msg.exec();
    if(res==QMessageBox::Yes){
        this->close();
    }
}

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 login();

private slots:


    void on_pushButton_clicked();

    void on_but2_clicked();

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

form.cpp

#include "form.h"
#include "ui_form.h"

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
  ,speecher(new QTextToSpeech(this))
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
        this->setAttribute(Qt::WA_TranslucentBackground);
}

Form::~Form()
{
    delete ui;
}
void Form::on_pushButton_4_clicked()
{
    this->close();
}

void Form::on_pushButton_clicked()
{
    speecher->say(ui->pushButton->text());
}

void Form::on_pushButton_2_clicked()
{
    speecher->say(ui->pushButton_2->text());
}

void Form::on_pushButton_3_clicked()
{
    speecher->say(ui->pushButton_3->text());
}

form.h

#ifndef FORM_H
#define FORM_H

#include <QWidget>
#include <QTextToSpeech>
namespace Ui {
class Form;
}

class Form : public QWidget
{
    Q_OBJECT

public:
    explicit Form(QWidget *parent = nullptr);
    ~Form();
private slots:
    void on_pushButton_4_clicked();

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

private:
    Ui::Form *ui;
    QTextToSpeech *speecher;
};

#endif // FORM_H

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

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

相关文章

苹果商店审核指南:确保Flutter应用顺利通过审核的关键步骤

引言 Flutter是一款由Google推出的跨平台移动应用开发框架&#xff0c;其强大的性能和流畅的用户体验使其备受开发者青睐。然而&#xff0c;开发一款应用只是第一步&#xff0c;将其成功上架到苹果商店才是实现商业目标的关键一步。本文将详细介绍如何使用Flutter将应用程序上…

数字时代电子账单邮件群发:简便、高效、环保

电子账单已经在许多行业得到广泛应用&#xff0c;通过邮件群发发送电子账单简便、高效、环保&#xff0c;以下是一些通常使用电子账单的行业&#xff1a; 1.银行和金融服务&#xff1a;银行、信用合作社、金融科技公司等机构通常通过电子账单向客户提供账户摘要、交易明细、利息…

Python-VBA函数之旅-bool函数

目录 1、bool函数 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、相关文章&#xff1a; 个人主页&#xff1a;非风V非雨-CSDN博客 bool函数(Boolean Function)用于将给定的值转换为布尔值(True或False)。常见的应用场景有&#xff1a; 1、条件判断&#xff1a;bool()…

每日一题 — 无重复字符的最长子串

解法一&#xff1a;暴力枚举 先固定一个left&#xff0c;让right向右遍历遇到重复的字符&#xff0c;让left加一然后right返回&#xff0c;重新遍历 解法二&#xff1a; 滑动窗口(在解法一的基础上进行优化) 还是先固定一个left在起始位置&#xff0c;让right从起始位置开始向…

使用docker制作Android镜像(实操可用)

一、安装包准备 1、准备jdk 下载地址&#xff1a;Java Downloads | Oracle 注意版本&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 我下载的jdk17&#xff0c;不然后面构建镜像报错&#xff0c;就是版本不对 2、准备安装的工具包 ttps://dev…

Java多线程实战-从零手搓一个简易线程池(四)线程池生命周期状态流转实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

Playwright安装和基本使用(ui/web自动化)

1.简介 Playwright是2021年微软开源的一个项目「playwright-python」。针对 Python 语言的纯自动化工具&#xff0c;它可以通过单个API自动执行 Chromium&#xff0c;Firefox 和 WebKit 浏览器&#xff0c;同时支持以无头模式、有头模式运行。 Playwright&#xff08;Git&…

【Machine Learning系列】带你快速学习十大机器学习算法

前言 机器学习算法是一类用于从数据中学习模式和规律的算法。这些算法可以通过训练样本的输入和输出来推断出模型的参数&#xff0c;然后用于预测新的未知数据。 文章目录 前言机器学习算法1. 线性回归算法 Linear Regression2. 支持向量机算法(Support Vector Machine,SVM)3. …

Centos7.9部署Harbor详细教程

1、前置准备 系统需要已经安装docker、docker-compose… 2、下载Harbor wget https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-online-installer-v2.10.1.tgztar xvf harbor-offline-installer-v2.10.1.tgzcd harbor3、修改配置文件 cp harbor.yml.t…

CSS滚动条样式修改

前言 目前我们可以通过 CSS伪类 来实现滚动条的样式修改&#xff0c;以下为修改滚动条样式用到的CSS伪类&#xff1a; ::-webkit-scrollbar — 整个滚动条 ::-webkit-scrollbar-button — 滚动条上的按钮 (上下箭头) ::-webkit-scrollbar-thumb — 滚动条上的滚动滑块 ::-web…

CUDA 12.4文档2 内核线程架构

本博客参考官方文档进行介绍&#xff0c;全网仅此一家进行中文翻译&#xff0c;走过路过不要错过。 官方网址&#xff1a;https://docs.nvidia.com/cuda/cuda-c-programming-guide/ 本文档分成多个博客进行介绍&#xff0c;在本人专栏中含有所有内容&#xff1a; https://bl…

网络学习学习笔记

NETEBASE学习笔记 一.VRP系统1.四种视图模式2.基础命令 二.TCP/IP1.五层模型 一.VRP系统 1.四种视图模式 (1)< Huawei > 用户视图 【查看运行状态】 (2)[Huawei] 系统视图 【配置设备的系统参数】 system-view /sys 进入系统视图 CtrlZ/return 直接返回用户视图 (3)[Hua…

AR远程空间标注Vuforia+WebRTC音视频通话和空间标注功能

AR远程空间标注VuforiaWebRTC音视频通话和空间标注功能 视频学习地址&#xff1a;https://www.bilibili.com/video/BV1ZT4y187mG/?vd_sourcefc4b6cdd80b58c93a280fd74c37aadbf

李沐23_LeNet——自学笔记

手写的数字识别 知名度最高的数据集&#xff1a;MNIST 1.训练数据&#xff1a;50000 2.测试数据&#xff1a;50000 3.图像大小&#xff1a;28✖28 4.10类 总结 1.LeNet是早期成功的神经网络 2.先使用卷积层来学习图片空间信息 3.使用全连接层来转换到类别空间 代码实现…

学习记录:bazel和cmake运行终端指令

Bazel和CMake都是用于构建软件项目的工具&#xff0c;但它们之间有一些重要的区别和特点&#xff1a; Bazel&#xff1a; Bazel是由Google开发的构建和测试工具&#xff0c;用于构建大规模的软件项目。它采用一种称为“基于规则”的构建系统&#xff0c;它利用构建规则和依赖关…

Android 属性动画及自定义3D旋转动画

Android 动画框架 其中包括&#xff0c;帧动画、视图动画&#xff08;补间动画&#xff09;、属性动画。 在Android3.0之前&#xff0c;视图动画一家独大&#xff0c;之后属性动画框架被推出。属性动画框架&#xff0c;基本可以实现所有的视图动画效果。 视图动画的效率较高…

第十届蓝桥杯大赛个人赛省赛(软件类) CC++ 研究生组-RSA解密

先把p&#xff0c;q求出来 #include<iostream> #include<cmath> using namespace std; typedef long long ll; int main(){ll n 1001733993063167141LL, sqr sqrt(n);for(ll i 2; i < sqr; i){if(n % i 0){printf("%lld ", i);if(i * i ! n) pri…

关于VMware安装win系统的磁盘扩容与缩减

使用VMware虚拟机安装虚拟windows系统时&#xff0c;如果创建虚拟磁盘的空间预留不足&#xff08;特别是C判空间&#xff09;&#xff0c;安装win系统后&#xff0c;由于默认win系统在安装时分配的healthy健康盘位于系统C盘临近区域&#xff0c;此时如果需要增加C盘虚拟空间&am…

张驰咨询:深圳六西格玛绿带培训5天专业能力提升课程

张驰咨询即将在深圳开设的六西格玛绿带5天培训班&#xff0c;是针对希望在质量管理、项目管理等领域提升自己能力的专业人士的一次重要机会。六西格玛作为一种旨在减少缺陷、提高效率和质量的方法论&#xff0c;已经被全球众多企业采用。绿带认证作为进入这一领域的门槛之一&am…

【产品】ADW300 无线计量仪表 用于计量低压网络的三相有功电能

1 概述 ADW300 无线计量仪表主要用于计量低压网络的三相有功电能&#xff0c;具有体积小、精度高、功能丰富等优点&#xff0c;并且可选通讯方式多&#xff0c;可支持 RS485 通讯和 Lora、2G、NB、4G 等无线通讯方式&#xff0c;增加了外置互感器的电流采样模式&#xff0c;从…