当前位置: 首页 > news >正文

使用qt完善对话框功能

1、

完善登录框

点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。

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

点击取消按钮后,弹出问题对话框,询问是否确定要退出登录,给出两个按钮,yes|no,点击yes,则直接关闭整个登录界面,如果点击no则进行进行登录

要求:消息对话框,对象版和静态成员函数版至少各实现一个

mianwindow.h

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();signals:void jump();           //自定义跳转信号函数private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();private:Ui::MainWindow *ui;Second *s1;  //定义另一个界面的指针
};
#endif // MAINWINDOW_H

second.h

#ifndef SECOND_H
#define SECOND_H#include <QDialog>namespace Ui {
class Second;
}class Second : public QDialog
{Q_OBJECTpublic:explicit Second(QWidget *parent = nullptr);~Second();public slots:void jump_slot();         //接收跳转信号的槽函数private:Ui::Second *ui;
};#endif // SECOND_H

mianwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);ui->label->setPixmap(QPixmap("D:\\QTtupian\\jimoaqing.gif"));ui->label->setScaledContents(true);ui->label_2->setPixmap(QPixmap("D:\\QTtupian\\zhanghao.jpg"));ui->label_2->setScaledContents(true);ui->label_3->setPixmap(QPixmap("D:\\QTtupian\\mima.jpg"));ui->label_3->setScaledContents(true);s1 = new Second;            //给另一个界面实例化空间//将当前界面的信号,与s1界面的槽函数进行连接connect(this,&MainWindow::jump, s1, &Second::jump_slot);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{if(ui->lineEdit->text()=="admin"&&ui->lineEdit_2->text()=="123456"){//信息对话框QMessageBox box(QMessageBox::Question,"信息对话框","登录成功",QMessageBox::Ok,this);box.setDefaultButton(QMessageBox::Ok);  //默认到ok上int ret = box.exec();  //运行对话框if(ret == QMessageBox::Ok){emit jump();  //发送跳转信息this->hide();        //将当前界面隐藏}}else{//错误对话框QMessageBox box(QMessageBox::Question,"错误对话框","账号密码不匹配,是否重新登录",QMessageBox::Ok|QMessageBox::Cancel,this);box.setDefaultButton(QMessageBox::Ok);  //默认到ok上int ret = box.exec();  //运行对话框switch(ret){case QMessageBox::Ok:ui->lineEdit->clear();  //清楚账号密码内容ui->lineEdit_2->clear();break;case QMessageBox::Cancel://ret=box.close();break;}}}void MainWindow::on_pushButton_2_clicked()
{//问题对话框int ret = QMessageBox::question(this,"问题对话框","是否确定要退出登录",QMessageBox::Yes|QMessageBox::No,QMessageBox::No);switch(ret){case QMessageBox::Yes:this->close();  //关闭窗口break;case QMessageBox::No:break;}
}

second.cpp

#include "second.h"
#include "ui_second.h"Second::Second(QWidget *parent) :QDialog(parent),ui(new Ui::Second)
{ui->setupUi(this);
}Second::~Second()
{delete ui;
}//接收跳转信号对应的槽函数
void Second::jump_slot()
{this->show();            //将自己界面进行展示
}

主函数

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

2、思维导图

http://www.lryc.cn/news/174995.html

相关文章:

  • Day 03 python学习笔记
  • 优化类问题概述
  • 第一个 Go 程序“hello,world“ 与 main 函数
  • MySQL缓冲池Buffer Pool
  • springboot实现发送邮箱验证码
  • ESP8266使用记录(三)
  • 基于微信小程序的在线视频课程学习平台设计与实现(源码+lw+部署文档+讲解等)
  • CloudCompare 二次开发(15)——点云添加高斯噪声
  • 一波免费、好用的API接口分享
  • Android App ~ LiveData
  • 全球第4大操作系统(鸿蒙)的软件后缀.hap
  • 算法练习第六十四天
  • 安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤【二】
  • 实现一个宽高自适应的正方形
  • shell脚本命令
  • Vue2023 面试归纳及复习(2)
  • idea 本地项目上传到 Git 步骤
  • 【从0学习Solidity】41. WETH
  • 微信小程序的无限瀑布流写法
  • 前有CAP理论,后有BASE理论,分布式系统理论基石
  • HTTP、TCP、SOCKET三者之间区别和原理
  • flutter项目中常用第三方模块
  • Android 混淆使用及其字典混淆(Proguard)
  • laravel 阿里云短信发送
  • 算法----LRU缓存机制
  • 基于springboot+vue的旅游系统(前后端分离)
  • 什么是堆栈和队列?如何实现它们?
  • 编译器自动生成的构造函数
  • SpringSecurity - 认证与授权、自定义失败处理、跨域问题、认证成功/失败处理器
  • 自定义映射resultMap