要求
- 点击“Ok”按钮判断输入用户名或密码是否正确,如错误弹出消息提示框,可以重新登录
- 点击“Cancel”按钮,则退出登录
1、项目框架
2、UI界面的设计
3、程序代码
loginDialog.h文件
#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H
#include <QDialog>
#include <QMessageBox> // 消息提示框
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class LoginDialog; }
QT_END_NAMESPACE
class LoginDialog : public QDialog
{
Q_OBJECT
public:
LoginDialog(QWidget *parent = nullptr);
~LoginDialog();
private:
Ui::LoginDialog *ui;
public slots:
// 处理OK按钮的槽函数
void onAccepted(void) ;
// 处理cancle按钮的槽函数
void onRejected(void);
};
#endif // LOGINDIALOG_H
loginDialog.cpp文件
#include "logindialog.h"
#include "ui_logindialog.h"
LoginDialog::LoginDialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::LoginDialog)
{
ui->setupUi(this);
// 信号和槽连接
// 点击Ok发送信号accepted
connect(ui->m_btnBox,SIGNAL(accepted(void)),
this, SLOT(onAccepted(void)));
//点击Cancel发送信号rejected
connect(ui->m_btnBox,SIGNAL(rejected(void)),
this, SLOT(onRejected(void)));
}
LoginDialog::~LoginDialog()
{
delete ui;
}
// 处理OK按钮的槽函数
void LoginDialog::onAccepted(void)
{
// tarena/123456:提示登录成功,否则提示失败
if(ui->m_usernameEdit->text() == "tarenae" &&
ui->m_passwordEdit->text() == "12345")
{
qDebug() << "登录成功";
close(); // 关闭登录窗口
}
else
{
// 创建消息提示框
QMessageBox msgBox(
QMessageBox::Critical, // 图标
"Error", // 标题
"用户名或者密码错误", // 提示信息
QMessageBox::Ok, // 按钮
this) ; // 父窗口
// 显示消息提示框,并进入事件循环
msgBox.exec() ;
}
}
// 处理cancle按钮的槽函数
void LoginDialog::onRejected(void)
{
QMessageBox msgBox(
QMessageBox::Question, // 图标
"登录", // 标题
"是否确定取消登录?", // 提示信息
QMessageBox::Yes | QMessageBox::No, //按钮
this) ; // 父窗口
// 显示消息提示框,并进入事件循环,点击Yes或No时候都会退出事件循环
// 但是返回结果不同,如果点击Yes则退出登录对话框
if(msgBox.exec() == QMessageBox::Yes)
{
close() ;
}
}
main.cpp文件
#include "logindialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
LoginDialog w;
w.show();
return a.exec();
}
4、运行效果
未完待续
有疑问的小伙伴可以留言一起交流讨论!!!