使用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_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    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_OBJECT

public:
    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、思维导图

相关推荐
Tairitsu_H16 分钟前
[C++] C++11右值引用与移动语义揭秘
开发语言·c++·c++11·右值引用·移动语义
麻辣布丁31 分钟前
java集合篇面试模拟
java·开发语言·面试
niucloud-admin33 分钟前
JAVA V6 多商户商城 开发文档——插件开发规范
java·开发语言
海盗12341 小时前
DSH 接入 OpenCode Go 报 400 MissingSessionID:从 LLM 语义层退到 fetch 传输层的完整排障
开发语言·后端·golang
weixin199701080161 小时前
《Mercari OTA 直连接入:日本二手电商出海的API通道与600次/分钟限流实战》(附Python源码)
开发语言·数据库·python
库玛西1 小时前
深度解构高并发利器:纯事件驱动 Reactor 模式的设计哲学与工程实践
服务器·开发语言·c++·笔记·tcp/ip
lemon_sjdk1 小时前
JavaScript 常用关键字全解析
开发语言·javascript·ecmascript
linx2951 小时前
单元五 · 对称认知·下:编译与链接
linux·c语言·开发语言·c++·嵌入式硬件
2501_930472442 小时前
从物理机到 CVM 全流程落地:部署脚本的 8 个云化改造点(附代码对比)
开发语言·人工智能·架构·腾讯云·perl
脉动数据行情12 小时前
Java SpringBoot 国际期货批量采集实践 美原油 / 黄金 / 指数期货定时落库
java·开发语言·spring boot