Qt --- Day02

news2024/11/23 19:00:15

实现效果:

点击登录,检验用户密码是否正确,正确则弹出消息框,点击ok转到另一个页面

不正确跳出错误消息框,默认选线为Cancel,点击Yes继续登录

点击Cancel跳出问题消息框,默认选项No,单击yes,退出程序,单击No继续登录

以下是实现的部分代码

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>  //基类QWidget的头文件
#include<QDebug>   //信息调试类,用于输出数据使用
#include<QIcon>
#include<QPushButton>
#include<QLabel>
#include<QLineEdit>
#include<QPixmap>
#include"enter_widget.h"
#include"communication.h"
#include<QMessageBox>
class Widget : public QWidget
{
    Q_OBJECT   //QT的信号与槽元对象

public:
    Widget(QWidget *parent = nullptr);//默认参数构造函数声明
    ~Widget();//虚析构声明
private:
    QLabel *pic;

    QLabel *tx;

    QPushButton* enter;
    QPushButton* login;
    QPushButton* question;

    QLabel* user;
    QLabel* passwd;

    QLineEdit* user_l;
    QLineEdit* passwd_l;

    enter_widget* en;

    QTimer * time;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    qDebug()<<this->size();   //获取当前姐买你的尺寸
    qDebug()<<this->width();  //获取当前组件的宽度
    qDebug()<<this->height(); //获取当前组件的高度
    this->setWindowTitle("QQ");
    //this->resize(500,400);//重新设置界面大小
    //this->resize(QSize(1000,1000));
    this->setFixedSize(500,400);//设置固定的界面大小
    //this->setMaximumSize(600,700);//最大界面大小
    //this->setMinimumSize(200,300);//最小界面大小
    this->setWindowIcon(QIcon("://msg/qq.png"));




    pic = new QLabel(this);
    pic->resize(this->width(),130);
    pic->setPixmap(QPixmap("://msg/fm.png"));
    pic->setScaledContents(true);


    tx = new QLabel(this);

    tx->resize(100,100);
    tx->move(200,60);
    tx->setPixmap(QPixmap("://msg/2.jpg"));
    tx->setScaledContents(true);


    enter = new QPushButton;
    enter->setParent(this);
    enter->setText("登录");
    enter->resize(100,50);
    enter->move(120,300);
    enter->setIcon(QIcon("://msg/enter.png"));
    enter->setStyleSheet("border:0px solid black;border-radius:10;background-color:#FFFFFF");

    login = new QPushButton;
    login->setParent(this);
    login->setText("注册");
    login->resize(100,50);
    login->move(280,300);
    login->setIcon(QIcon("://msg/enter.png"));
    login->setStyleSheet("border:0px solid black;border-radius:10;background-color:#FFFFFF");

//    question = new QPushButton;
//    question->setParent(this);
//    question->setText("问题");
//    question->resize(50,50);
//    question->move(390,300);
//    question->setStyleSheet("border:0px solid black;border-radius:10;background-color:#FFFFFF");

    user = new QLabel;
    user->setParent(this);
    user->setText("用户名:");
    user->resize(60,30);
    user->setAlignment(Qt::AlignCenter);
    //user->setFixedSize(50,20);
    user->move(enter->x(),enter->y()-120);

    passwd = new QLabel(this);
    passwd->setText("密 码:");
    passwd->resize(60,30);
    passwd->setAlignment(Qt::AlignCenter);
    //user->setFixedSize(50,20);
    passwd->move(enter->x(),enter->y()-60);


    user_l = new QLineEdit(this);
    user_l->resize(200,30);
    user_l->move(user->x()+60,user->y());
    user_l->setPlaceholderText("请输入用户名");
    user_l->setStyleSheet("border:0px solid black;border-radius:10;background-color:#b0bfbf");


    passwd_l= new QLineEdit(this);
    passwd_l->resize(200,30);
    passwd_l->move(passwd->x()+60,passwd->y());
    passwd_l->setPlaceholderText("请输入密码");
    passwd_l->setEchoMode(QLineEdit::Password);
    passwd_l->setStyleSheet("border:0px solid black;border-radius:10;background-color:#b0bfbf");

    //切换界面
    //会话界面
    en = new enter_widget;

    //交流界面
    com = new communication;


    connect(enter,&QPushButton::clicked,[=](){

        if(user_l->text()==QString("admin") && passwd_l->text() == "123456")
        {
            QMessageBox succbox(QMessageBox::NoIcon,"登录","登录成功",QMessageBox::Ok,enter);
            int err = succbox.exec();
            if(err == QMessageBox::Ok)
            {
                this->close();
                com->show();
            }
        }
        else
        {
            int err = QMessageBox::critical(
                        this,tr("错误"),
                        tr("账号密码不匹配,是否重新登录"),
                        QMessageBox::Yes | QMessageBox::Cancel,
                        QMessageBox::Cancel
                        );

            if(err == QMessageBox::Cancel)
            {
                int ques = QMessageBox::question(
                            this,
                            tr("问题"),
                            tr("是否退出"),
                            QMessageBox::Yes | QMessageBox::No,
                            QMessageBox::No
                            );
                if(ques == QMessageBox::Yes)
                {
                    this->close();
                }
            }
            this->user_l->clear();
            this->passwd_l->clear();
        }
    });


}
Widget::~Widget()
{
}

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

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

相关文章

netty之pipeline

Netty抽象出流水线(pipeline)这一层数据结构进行处理或拦截channel相关事件。 事件分为入站事件(inBound event)和出站事件(outBound event)的ChannelHandlers列表。ChannelPipeline使用先进的Intercepting Filter模式&#xff0c;使用户可以完全控制如何处理事件以及管道中的…

全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术教程

详情点击公众号链接&#xff1a;全流程GMS地下水数值模拟及溶质&#xff08;包含反应性溶质&#xff09;运移模拟技术教程 前言 GMS三维地质结构建模 GMS地下水流数值模拟 GMS溶质运移数值模拟与反应性溶质运移模 详情 1.GMS的建模数据的收集、数据预处理以及格式等&#xff…

2023/9/18 -- C++/QT

作业 完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两…

《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.4》

一、环境信息 操作系统&#xff1a;Centos7.6.1810 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 如下图所示&#xff1a; 注意&#xff1a;升级后由于加密算法的区别&#xff0c;低版本的SSH工具可能无法连接&#xff0c;建议改用Xshell7或SecureCRT9.0以上版本。 二、注意事项 1、检…

第九章 关系查询处理和查询优化

第九章 关系查询处理和查询优化 9.1 关系数据库系统的查询处理 9.1.1 查询处理步骤 查询分析 对查询语句进行扫描、词法分析和语法分析&#xff0c; 词法分析&#xff1a;从查询语句中识别出正确的语言符号。语法分析&#xff1a;进行语法检查。 查询检查 合法性检查视图转换…

【java】【SpringBoot】【二】运维实用篇 SpringBoot工程

目录 一、打包与运行 1、程序打包与运行&#xff08;Window版&#xff09; 1.1 打包 1.2 运行 1.3 打包插件 1.4 总结 1.6 命令行启动常见问题及解决方案 2、程序运行&#xff08;Linux版&#xff09; 二、配置高级 1、临时属性设置 2、配置文件分类 3、自定义配置…

Spring Boot + Vue3前后端分离实战wiki知识库系统十三--单点登录开发二

接着https://www.cnblogs.com/webor2006/p/17608839.html继续往下。 登录功能开发&#xff1a; 接下来则来开发用户的登录功能&#xff0c;先准备后端的接口。 后端增加登录接口&#xff1a; 1、UserLoginReq&#xff1a; 先来准备用户登录的请求实体&#xff1a; package com…

07JVM_内存模型和CAS与原子类

一、内存模型 1.java内存模型 Java内存结构是JMM&#xff08;Java Memory Model&#xff09;的意思。JMM定义了一套在多线程读写共享数据&#xff08;成员变量&#xff0c;数组&#xff09;时&#xff0c;对数据的原子性&#xff0c;见性&#xff0c;有序性的规则和保障。 1…

浅谈电力电容器技术的发展及选型

安科瑞 华楠 摘要&#xff1a;介绍了我国电力电容器产品制造技术的发展现状。在与国外电力电容器产品先进水平对比的基础上,讨论了我国电力电容器产品的差距和某些对策,并对我国电力电容器技术发展趋势提出了一些看法。 关键词&#xff1a;电力电容器;制造技术;技术发展 0 引…

每日一题~最大二叉树

题目链接&#xff1a;654. 最大二叉树 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数…

Logstash介绍

Logstash介绍 Logstash是一个开源数据收集引擎&#xff0c;具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来&#xff0c;并将数据标准化到你所选择的目的地。 集中、转换和存储你的数据 Logstash是一个开源的服务器端数据处理管道&#xff0c;可以同时从多…

采集分析仪设计原理图:437-带触摸显示的10路5Msps@18bit采集分析仪

带触摸显示的10路5Msps18bit采集分析仪 一、产品概述 本产品提供了多种传感器接入接口&#xff0c;支持多种类型传感器实时采集、处理、显示等功能。主处理器采用XC7Z100-FFG900芯片&#xff0c;具有444K逻辑单元和双核ARM Cortex-A9 MPCore处理器。PL部分得可编程逻辑可…

docker系列-报错以及解决指南

1. windows运行docker报错Windows Hypervisor is not presentDocker Desktop is unable to detect a Hypervisor.Hardware assisted virtualization and data execution protection must be enabled in the BIOS. Docker Desktop - Windows Hypervisor is not presentDocker D…

async和await的用法

定义 async的定义 在mdn中,async的定义为: async function 关键字可用于定义表达式中的异步函数。 其实很简单,就是async关键字后面定义的函数会被转化为一个异步的函数 如下所示: function fn1(){return 同步}async function asyncFn(){return 异步}console.log(fn1())con…

Dubbo3应用开发——架构的演变过程

Dubbo3应用开发——架构的演变过程 什么是Dubbo 早期Dubbo的定位&#xff1b; 基于Java的高性能&#xff0c;轻量级的RPC框架&#xff1b;SOA【Service-Oriented Architecture ⾯向服务的架构】 RPC服务治理&#xff1b; 2018年阿⾥巴巴把这个框架捐献给了 Apache 基⾦会&am…

深入理解Java单例模式和优化多线程任务处理

目录 饿汉模式懒汉模式单线程版多线程版双重检查锁定 阻塞队列 单例模式能保证某个类在程序中只存在唯一一份实例, 而不会创建出多个实例&#xff0c;并提供一个全局访问点。 饿汉模式 类加载的同时&#xff0c;创建实例。 class Singleton {private static final Singlet…

2023:生成式AI与存储最新发展和趋势分析(上)

生成式AI的热潮在短时间内席卷全球&#xff0c;以一种势不可挡的趋势迅速出圈&#xff0c;在某一时间段&#xff0c;似乎出现了“除了IT行业&#xff0c;人人都是AI专家”的盛况。这一轮如火如荼的全民AI热潮迸发至今&#xff0c;业已过半载&#xff0c;待最初的烟花绚烂散去&a…

【基础篇】六、基于SpringBoot来整合SSM的案例(下)

文章目录 1、前后端调用&#xff1a;axios发送异步请求2、添加功能3、删除功能4、修改功能5、异常消息处理6、分页功能7、分页Bug处理8、条件查询 接下来加入前端页面&#xff0c;使用axios发送异步请求调用上篇的接口。调前端代码时&#xff0c;发现还挺有趣&#xff0c;刷新、…

Learn Prompt-ChatGPT 精选案例:广告文案

ChatGPT 可以帮助我们生成广告文案和宣传图片&#xff0c;这对营销品牌建设很有帮助。通常&#xff0c;一个产品会有一个主要的广告词&#xff0c;传达设计理念或宣传产品的好处。我们可以尝试直接生成文案&#xff0c;看看 ChatGPT 有没有好的创意。假设我们的产品是一款登山鞋…

【css | linear-gradient】linear-gradient()的用法

linear-gradient() CSS函数创建一个由两种或多种颜色沿一条直线进行线性过渡的图像,其结果是<gradient>数据类型的对象,此对象是一种特殊的<image> 数据类型。 先看一个线上的示例 https://code.juejin.cn/pen/7277486410842996771 语法 /* 渐变轴为 45 度&…