完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面
如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面
如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能
要求:基于属性版和基于静态成员函数版至少各用一个
widget.cpp
//消息对话框 #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::on_warBtn_clicked() { //弹出警告对话框 基于属性版本 QMessageBox msg(QMessageBox::Warning, //图标 "警告", //标题 "不要再犯困了,否则。。", //文本 QMessageBox::Yes | QMessageBox::No, //提供按钮 this //指定父组件 ); //调用exec() 弹出对话框 int ret = msg.exec(); //根据用户的选择,执行不同的功能 if(ret == QMessageBox::Yes) { qDebug() << "好的好的 我已经清醒了"; } else { qDebug() << "我就要睡,。。"; } } void Widget::on_inforBtn_clicked() { //弹出一个信息对话框 基于静态成员函数实现 int ret = QMessageBox::information(this, //父组件 "信息", //标题 "晚上我请你吃饭", //文本 QMessageBox::Yes | QMessageBox::No //按钮 ); //根据用户的选择,执行不同的功能 if(ret == QMessageBox::Yes) { qDebug() << "好的,我要吃。。。" ; } else { qDebug() << "我有约了,你自己吃吧"; } } void Widget::on_pushButton_clicked() { bool ok; QFont f = QFontDialog::getFont(&ok,QFont("宋体",10,1),this,"字体" ); // ui->plainTextEdit->setFont(f); ui->textEdit->setCurrentFont(f); } void Widget::on_loginBtn_clicked() { // 获取输入的用户名和密码 QString username = ui->usernameLineEdit->text(); QString password = ui->passwordLineEdit->text(); // 假设正确的用户名和密码 const QString correctUsername = "zhang"; const QString correctPassword = "123456"; // 验证用户名和密码 if (username == correctUsername && password == correctPassword) { // 如果正确,显示成功信息 QMessageBox::information(this, "Login", "登录成功", QMessageBox::Ok); // 用户点击Ok后,关闭登录界面,跳转到其他界面的逻辑 this->close(); //第一个界面关闭 emit my_jump(); //触发第一个界面的信号 // 这里仅示例性地关闭当前窗口 close(); } else { // 如果不正确,显示错误信息 int ret = QMessageBox::critical(this, "Login Error", "账号和密码不匹配,是否重新登录?", QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { // 清除密码框中的内容,允许用户重新输入 ui->passwordLineEdit->clear(); } else { // 如果选择No,关闭登录界面 close(); } } } void Widget::on_pushButton_2_clicked() { // 如果用户点击取消按钮,弹出问题对话框询问是否退出 int ret = QMessageBox::question(this, "Exit Login", "您是否确定要退出登录?", QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { // 用户点击Yes,关闭登录界面 close(); } }
widget.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QFontDialog> #include <QMessageBox> #include <QDebug> #include <QFont> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); private slots: void on_warBtn_clicked(); void on_inforBtn_clicked(); void on_pushButton_clicked(); void on_loginBtn_clicked(); void on_pushButton_2_clicked(); signals: void my_jump(); //第一个界面准备的信号 private: Ui::Widget *ui; }; #endif // WIDGET_H
second.cpp
#include "second.h" #include "ui_second.h" second::second(QWidget *parent) : QWidget(parent), ui(new Ui::second) { ui->setupUi(this); } second::~second() { delete ui; } //第一个界面my_jump信号对应的槽函数 void second::jump_slot() { this->show(); //显示 }
second.h
#ifndef SECOND_H #define SECOND_H #include <QWidget> namespace Ui { class second; } class second : public QWidget { Q_OBJECT public: explicit second(QWidget *parent = nullptr); ~second(); public slots: void jump_slot(); //第二个界面准备的槽函数声明 private: Ui::second *ui; }; #endif // SECOND_H
main.cpp
完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 //如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面 //如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能 //要求:基于属性版和基于静态成员函数版至少各用一个 #include "widget.h" #include "second.h" //包含第二界面的头文件 #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; //第二个界面实例化窗口 second s; //连接 QObject::connect( &w, &Widget::my_jump, &s, &second::jump_slot); w.show(); return a.exec(); }