【QT】day2

1.完善登录框
点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。
如果账号和密码匹配,则弹出信息对话框,给出提示信息为“登录成功”,给出一个按钮ok,点击ok后,关闭整个登录界面,跳转到其他界面
点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录
要求:消息对话框,对象版和静态成员函数版至少各实现一个

demo.h

#ifndef DEMO_H
#define DEMO_H#include <QWidget>namespace Ui {
class demo;
}class demo : public QWidget
{Q_OBJECTpublic slots:void jump_slots();public:explicit demo(QWidget *parent = nullptr);~demo();private:Ui::demo *ui;
};#endif // DEMO_H

mywidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H      //防止文件重复引用#include <QWidget>      //父类的头文件#include <QDebug>       //信息调试类,用于输出数据使用
#include<QIcon>         //图标头文件
#include <QPushButton>  //按钮头文件
#include<QLineEdit>     //行类头文件
#include<QLabel>        //标签头文件
#include <QCheckBox>    //多选框头文件
#include <QMessageBox>  //对话框头文件#include "demo.h"QT_BEGIN_NAMESPACE
namespace Ui { class myWidget; }    //声明ui界面对应的头文件中的命名空间,这里不需要,注释掉
QT_END_NAMESPACE//自定义了myWidget类,公共继承了Qwidget类
class myWidget : public QWidget
{Q_OBJECT    //信号与槽的元对象,没有这个对象,信号与槽就不能使用了signals:void jump();//槽函数
public slots:void on_bn_dl_clicked();void on_bn_qx_clicked();//公共函数
public:myWidget(QWidget *parent = nullptr);    //构造函数的声明~myWidget();        //析构函数的声明//私有成员
private:
//    Ui::myWidget *ui;   //可以通过该指针调用ui界面上拖拽出来的组件,这里不用,注释掉QLineEdit *mm;QLineEdit *zh;QPushButton *bn_dl;QPushButton *bn_qx;demo *demo1;
};
#endif // MYWIDGET_H

demo.cpp

#include "demo.h"
#include "ui_demo.h"void demo::jump_slots()
{this->show();
}demo::demo(QWidget *parent) :QWidget(parent),ui(new Ui::demo)
{ui->setupUi(this);
}demo::~demo()
{delete ui;
}

main.cpp

#include "mywidget.h"    //引入自定义图形化界面类的头文件
#include <QApplication> //引入应用程序类的头文件int main(int argc, char *argv[])
{QApplication a(argc, argv);//使用应用程序类,实例化一个应用程序的对象myWidget w;//用自定义的图形化界面类实例化一个对象w.show();//调用show函数展示界面,父类提供的,可以展示自己的组件,以自己作为父组件的所有子组件也会被展示出来return a.exec();//阻塞等待应用程序,防止应用程序结束,等待用户操作、等待信号与槽、等待事件发生
}

mywidget.cpp

#include "mywidget.h"
//#include "ui_mywidget.h"myWidget::myWidget(QWidget *parent): QWidget(parent)   //显行调用父类的有参构造完成对子类从父类继承下来成员的初始化工作
//    , ui(new Ui::myWidget)  //给自己类中的指针成员初始化空间,ui界面中拖拽出来的组件在这个对象中,这里不用,注释掉
{
//    ui->setupUi(this);  //调用ui::myWidget里面的成员函数,给拖拽的组件实例化空间,并设置相关属性,这里不用, 注释掉//这里开始写所有界面设置//设置大窗口属性this->setFixedSize(530,399);//设置固定尺寸this->setWindowTitle("时光QQ"); //设置当前的窗口标题this->setWindowIcon(QIcon("D://Qt-project//HUAQING23062//day9//03homework//icon//shiguang02.jpg")); //设置当前窗口的标题图标this->setStyleSheet("background-color:green;");//设置一个图形标签QLabel *picture1=new QLabel(this);picture1->resize(530,160);picture1->setPixmap(QPixmap("D://Qt-project//HUAQING23062//day8//icon//shiguang01.jpg"));picture1->setScaledContents(true);//设置登录图标QLabel *p1=new QLabel(this);p1->resize(60,50);p1->move(80,180);p1->setPixmap(QPixmap("D://Qt-project//HUAQING23062//day8//icon//shiguang03.png"));p1->setScaledContents(true);//设置密码图标QLabel *p2=new QLabel(this);p2->resize(60,50);p2->move(p1->x(),p1->y()+80);p2->setPixmap(QPixmap("D://Qt-project//HUAQING23062//day8//icon//shanr02.jpg"));p2->setScaledContents(true);//设置登录行this->zh=new QLineEdit(this);zh->resize(300,50);zh->move(p1->x()+75,p1->y());zh->setStyleSheet("background-color:0;");zh->setPlaceholderText("请输入用户名");//设置密码行this->mm=new QLineEdit(this);mm->resize(300,50);mm->move(p2->x()+75,p2->y());mm->setStyleSheet("background-color:0;");mm->setPlaceholderText("请输入密码");mm->setEchoMode(QLineEdit::Password);//自动登录和记住密码QCheckBox *chb1=new QCheckBox(this);chb1->setText("自动登录");chb1->move(mm->x()+30,mm->y()+65);QCheckBox *chb2=new QCheckBox(this);chb2->setText("记住密码");chb2->move(chb1->x()+160,chb1->y());//登录按钮this->bn_dl=new QPushButton(this);bn_dl->setIcon(QIcon("D://Qt-project//HUAQING23062//day8//icon//shiguang02.jpg"));bn_dl->setText("登录");bn_dl->setStyleSheet("background-color:#138;");bn_dl->move(mm->x()+30,mm->y()+95);bn_dl->resize(80,35);//取消按钮this->bn_qx=new QPushButton(this);bn_qx->setIcon(QIcon("D://Qt-project//HUAQING23062//day8//icon//shiguang02.jpg"));bn_qx->setText("取消");bn_qx->setStyleSheet("background-color:#831;");bn_qx->move(bn_dl->x()+160,bn_dl->y());bn_qx->resize(80,35);//连接登录按钮的点击信号和槽函数connect(bn_dl,&QPushButton::clicked,this,&myWidget::on_bn_dl_clicked);//连接取消按钮的点击信号和槽函数connect(bn_qx,&QPushButton::clicked,this,&myWidget::on_bn_qx_clicked);demo1=new demo;//连接跳转信号和隔壁槽函数connect(this,&myWidget::jump,demo1,&demo::jump_slots);}myWidget::~myWidget()
{
//    delete ui;    //释放指针空间,这里没有用到,注释掉
}//定义登录按钮的槽函数
void myWidget::on_bn_dl_clicked()
{QString username,psd;username=zh->text();psd=mm->text();if(username=="admin" && psd=="123456"){//对象版QMessageBox masg_login;masg_login.setIcon(QMessageBox::Information);masg_login.setInformativeText("点击ok后,将关闭整个登录界面,\n然后跳转到登录后的界面");masg_login.setWindowTitle("登录成功");masg_login.setStandardButtons(QMessageBox::Ok);masg_login.setDefaultButton(QMessageBox::Ok);int ret = masg_login.exec();               //展示对话框if(ret==QMessageBox::Ok){qDebug()<<"111";
//            this->demo1->show();this->hide();emit jump();
//            this->demo1->show();}}else {//静态成员函数版int ret=QMessageBox::critical(this, "登录错误","账号密码不匹配,是否重新登录",QMessageBox::Ok|QMessageBox::Cancel);if(ret==QMessageBox::Ok){zh->clear();mm->clear();}else if(ret==QMessageBox::Cancel){this->close();}}
}//定义取消按钮的槽函数
void myWidget::on_bn_qx_clicked()
{//静态成员函数版int ret=QMessageBox::question(this, "提示","是否确定要退出登录?",QMessageBox::Yes|QMessageBox::No);if(ret==QMessageBox::No){bn_dl->click();}else if(ret==QMessageBox::Yes){this->close();}
}

结果:
1

2
3
4

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

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

相关文章

分布式缓冲-Redis

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

神经网络 02(激活函数)

一、激活函数 在神经元中引入了激活函数&#xff0c;它的本质是向神经网络中引入非线性因素的&#xff0c;通过激活函数&#xff0c;神经网络就可以拟合各种曲线。 如果不用激活函数&#xff0c;每一层输出都是上层输入的线性函数&#xff0c;无论神经网络有多少层&#xff0c…

(vue2)面经基础版-案例效果分析

配路由 先配一级&#xff0c;一级里面配二级。一级路由&#xff1a;首页&#xff08;二级&#xff1a;嵌套4个小页面&#xff09;、详情页 高亮a->router-link&#xff0c;高亮效果对自带高亮类名router-link(-exact)-active设置 注&#xff1a;通过children配置项&#…

使用vite创建vue3项目及项目的配置 | 环境准备 ESLint配置 prettier配置 husky配置

使用vite创建vue3项目及项目的配置 1.环境准备 使用vite搭建项目&#xff0c;vite需要nodejs版本14.18、16 node v18.16.1pnpm 8.7.4 pnpm:performant npm(高性能的npm)由npm/yarn衍生而来&#xff0c;解决了npm/yarn内部潜在的bug&#xff0c;极大的优化了性能&#xff0c…

能用就行——玄学问题:Compile with TORCH_USE_CUDA_DSA to enable device-side assertions

配置&#xff1a; python 3.9.0&#xff0c;torch2.0.1cu118 背景&#xff1a; 一直使用这个配置训练都没问题。搁置了一个月之后&#xff0c;再次使用就显示报错“Compile with TORCH_USE_CUDA_DSA to enable device-side assertions.” 过程&#xff1a; 尝试了网上的各种方…

【SG滤波】三阶滤波、五阶滤波、七阶滤波(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

气传导耳机对耳朵有伤害吗?气传导耳机哪款好?

​随着气传导耳机的快速发展&#xff0c;在运动、办公等场合能够经常看到&#xff0c;带来了前所未有的舒适体验。作为一种新型耳机类型&#xff0c;相较传统入耳式耳机来说&#xff0c;更有利于耳道卫生&#xff0c;在听歌时还能保持对环境声的感知。面对市面上这么多气传导耳…

GEE:快速实现NDVI时间序列NDVI线性趋势和变化敏感性计算(斜率、截距)

作者:CSDN @ _养乐多_ 本博客将向您介绍如何使用Google Earth Engine(GEE)平台来处理Landsat 5、7和8的卫星图像数据,计算NDVI的斜率和截距,以及如何导出这些结果供进一步分析使用。 文章目录 一、代码详解1.1 核心代码详解1.2 核心代码详解1.3 代码框架介绍二、完整代码…

Python 多进程异常

这里写目录标题 1、捕获异常2、退出程序3、进程共享变量4、multiprocessing的Pool所起的进程中再起进程 1、捕获异常 https://zhuanlan.zhihu.com/p/321408784 try:<语句> except Exception as e:print(异常说明,e)1 捕获所有异常 包括键盘中断和程序退出请求&#xff0…

KINODYNAMIC-路径规划

工程自动导航分为两步&#xff1a;先路径规划&#xff0c;再轨迹规划 但是如果路径规划与轨迹规划完全独立开&#xff0c;不考虑运动学约束&#xff0c;会导致搜索出来的路线无法用轨迹优化矫正过来 例如&#xff1a; 因此再路径规划的时候&#xff0c;就应该一定程度上将运动…

CANoe-Model Editor无法修改ARXML文件的问题、E2E在SOME/IP通信中的使用问题

1、Model Editor无法修改ARXML文件的问题 在CANoe 15软件版本中,Communication Setup导入arxml文件后,可以在model editor中打开arxml并修改配置。关闭model editor后再打开,可以看到修改的配置被保存了。 但是,当我把arxml文件从Communication Setup中移除后,再导入。此…

基于Java的大学生心理健康答题小程序设计与实现(亮点:选题新颖、可以发布试卷设置题目、自动判卷、上传答案、答案解析)

校园点餐小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统主要功能5.1 登…

python生成PDF报告

前言 最近接到了一个需求-将项目下的样本信息汇总并以PDF的形式展示出来&#xff0c;第一次接到这种PDF的操作的功能&#xff0c;还是有点慌的&#xff0c;还好找到了reportlab这个包&#xff0c;可以定制化向PDF写内容&#xff01; 让我们由简入深进行讲解 一、reportlab是…

BLE Mesh蓝牙mesh传输大数据包传输文件照片等大数据量通讯

1、BLE Mesh数据传输现状 BLE Mesh网络技术是低功耗蓝牙的一个进阶版&#xff0c;Mesh扩大了蓝牙在应用中的规模和范围&#xff0c;因为它同时支持超过三万个网络节点&#xff0c;可以跨越大型建筑物&#xff0c;不仅可以使得医疗健康应用更加方便快捷&#xff0c;还能监测像学…

【大数据之Kafka】十三、Kafka消费者生产经验之分区的分配及再平衡、数据积压和消费者事务

1 分区的分配及再平衡 一个consumer group中有多个consumer组成&#xff0c;一个 topic有多个partition组成&#xff0c;使用分区分配策略决定由哪个consumer来消费哪个partition的数据。 Kafka有四种主流的分区分配策略&#xff1a; Range、RoundRobin、Sticky、CooperativeSt…

C++中的深拷贝和浅拷贝介绍

对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如: class Base{public:Base(): m_a(0), m_b(0){ }Base(int a, int b): m_a(a), m_b(b){ }private:int m_a;int m_b;};int main(){int a = 10;int b = a; //拷贝Base obj1(10, 20);Base obj2…

kafka管理工具之kafka-ui的环境搭建笔记

由于项目需要kafka支持认证功能&#xff0c;就把kafka升级到3.2.0了。之前一直使用的kafka tools(现在叫Offset Explorer&#xff0c;个人使用免费&#xff0c;商用付费)&#xff0c;开了认证之后就不好用了&#xff0c;卡的很&#xff0c;一点也不丝滑了&#xff0c;于是只好重…

TC397 IfxAsclin串口收发分析

TC397 IfxAsclin串口收发分析 硬件FIFO 16 bytes TxFIFO 16 bytes RxFIFO 软件操作: 通过以上函数调用分析,可知: 1:初始化串口时,指定的FIFO为S/W 缓冲FIFO 2:ILLD提供的ISR操作函数: IfxAsclin_Asc_isrTransmit(&gstAsc2); IfxAsclin_Asc_isrReceive(&gs…

Linux集群时间同步方法

参考&#xff1a;https://www.cnblogs.com/felixzh/p/10638399.html

SpringMvc决战-【SpringMVC之自定义注解】

目录 一、前言 1.1.什么是注解 1.2.注解的用处 1.3.注解的原理 二.注解父类 1.注解包括那些 2.JDK基本注解 3. JDK元注解 4.自定义注解 5.如何使用自定义注解&#xff08;包括&#xff1a;注解标记【没有任何东西】&#xff0c;元数据注解&#xff09;&#xff1f; 三…