mirror of
https://gitee.com/Zhaoxin59/my-chat_-client.git
synced 2026-03-31 05:41:49 +08:00
has been completed.
This commit is contained in:
150
loginwidget.cpp
150
loginwidget.cpp
@ -1,5 +1,10 @@
|
||||
#include "loginwidget.h"
|
||||
|
||||
#include "mainwidget.h"
|
||||
#include "model/datacenter.h"
|
||||
|
||||
using namespace model;
|
||||
|
||||
LoginWidget::LoginWidget(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
{
|
||||
@ -46,12 +51,12 @@ LoginWidget::LoginWidget(QWidget *parent)
|
||||
verifyCodeEdit->setPlaceholderText("输入验证码");
|
||||
verifyCodeEdit->setStyleSheet(editStyle);
|
||||
|
||||
// 7. 创建显示验证码图片的控件 (此处先用 QPushButton 来表示一下, 后续进一步编写这里的逻辑)
|
||||
// 创建显示验证码图片的控件 (此处先用 QPushButton 来表示一下, 后续进一步编写这里的逻辑)
|
||||
// 后续会自定义 QWidget, 通过画图 api 来实现这里的验证码功能.
|
||||
QPushButton* verifyCodeWidget = new QPushButton();
|
||||
verifyCodeWidget->setText("验证码");
|
||||
verifyCodeWidget->setStyleSheet("QWidget { border: none; }");
|
||||
//verifyCodeWidget = new VerifyCodeWidget(this);
|
||||
//* verifyCodeWidget = new QPushButton();
|
||||
//idget->setText("验证码");
|
||||
//idget->setStyleSheet("QWidget { border: none; }");
|
||||
verifyCodeWidget = new VerifyCodeWidget(this);
|
||||
|
||||
// 创建登录按钮
|
||||
submitBtn = new QPushButton();
|
||||
@ -88,24 +93,24 @@ LoginWidget::LoginWidget(QWidget *parent)
|
||||
|
||||
|
||||
// 处理信号槽
|
||||
//connect(switchModeBtn, &QPushButton::clicked, this, &LoginWidget::switchMode);
|
||||
connect(switchModeBtn, &QPushButton::clicked, this, [=]() {
|
||||
if (isLoginMode) {
|
||||
//切换到注册模式
|
||||
this->setWindowTitle("注册");
|
||||
titleLabel->setText("注册");
|
||||
submitBtn->setText("注册");
|
||||
switchModeBtn->setText("登录");
|
||||
}
|
||||
else {
|
||||
//切换到登录模式
|
||||
this->setWindowTitle("登录");
|
||||
titleLabel->setText("登录");
|
||||
submitBtn->setText("登录");
|
||||
switchModeBtn->setText("注册");
|
||||
}
|
||||
isLoginMode = !isLoginMode;
|
||||
});
|
||||
connect(switchModeBtn, &QPushButton::clicked, this, &LoginWidget::switchMode);
|
||||
//connect(switchModeBtn, &QPushButton::clicked, this, [=]() {
|
||||
// if (isLoginMode) {
|
||||
// //切换到注册模式
|
||||
// this->setWindowTitle("注册");
|
||||
// titleLabel->setText("注册");
|
||||
// submitBtn->setText("注册");
|
||||
// switchModeBtn->setText("登录");
|
||||
// }
|
||||
// else {
|
||||
// //切换到登录模式
|
||||
// this->setWindowTitle("登录");
|
||||
// titleLabel->setText("登录");
|
||||
// submitBtn->setText("登录");
|
||||
// switchModeBtn->setText("注册");
|
||||
// }
|
||||
// isLoginMode = !isLoginMode;
|
||||
// });
|
||||
|
||||
connect(phoneModeBtn, &QPushButton::clicked, this, [=]() {
|
||||
// 此处还可以把 isLoginMode 这个值传到新的窗口中, 让新的窗口决定自己是登录状态还是注册状态. 大家自行尝试实现.
|
||||
@ -116,8 +121,99 @@ LoginWidget::LoginWidget(QWidget *parent)
|
||||
this->close();
|
||||
});
|
||||
|
||||
//connect(submitBtn, &QPushButton::clicked, this, &LoginWidget::clickSubmitBtn);
|
||||
connect(submitBtn, &QPushButton::clicked, this, [=]() {
|
||||
connect(submitBtn, &QPushButton::clicked, this, &LoginWidget::clickSubmitBtn);
|
||||
/*connect(submitBtn, &QPushButton::clicked, this, [=]() {
|
||||
Toast::showMessage("Just a test message...");
|
||||
});
|
||||
}
|
||||
});*/
|
||||
}
|
||||
|
||||
void LoginWidget::switchMode()
|
||||
{
|
||||
if (isLoginMode) {
|
||||
//切换到注册模式
|
||||
this->setWindowTitle("注册");
|
||||
titleLabel->setText("注册");
|
||||
submitBtn->setText("注册");
|
||||
switchModeBtn->setText("登录");
|
||||
}
|
||||
else {
|
||||
//切换到登录模式
|
||||
this->setWindowTitle("登录");
|
||||
titleLabel->setText("登录");
|
||||
submitBtn->setText("登录");
|
||||
switchModeBtn->setText("注册");
|
||||
}
|
||||
isLoginMode = !isLoginMode;
|
||||
}
|
||||
|
||||
void LoginWidget::clickSubmitBtn()
|
||||
{
|
||||
//先从输入框拿到必要的内容
|
||||
const QString& username = usernameEdit->text();
|
||||
const QString& password = passwordEdit->text();
|
||||
const QString& verifyCode = verifyCodeEdit->text();
|
||||
if (username.isEmpty()) {
|
||||
Toast::showMessage("用户名不能为空");
|
||||
return;
|
||||
}
|
||||
else if (password.isEmpty()) {
|
||||
Toast::showMessage("密码不能为空");
|
||||
return;
|
||||
}
|
||||
else if (verifyCode.isEmpty()) {
|
||||
Toast::showMessage("验证码不能为空");
|
||||
return;
|
||||
}
|
||||
|
||||
//对比验证码是否正确
|
||||
if (!verifyCodeWidget->checkVerifyCode(verifyCode)) {
|
||||
Toast::showMessage("验证码不正确");
|
||||
verifyCodeEdit->clear();
|
||||
return;
|
||||
}
|
||||
|
||||
//真正发送网络请求
|
||||
DataCenter* dataCenter = DataCenter::getInstance();
|
||||
if (isLoginMode) {
|
||||
//登录
|
||||
connect(dataCenter, &DataCenter::userLoginDone, this, &LoginWidget::userLoginDone);
|
||||
dataCenter->userLoginAsync(username, password);
|
||||
}
|
||||
else {
|
||||
//注册
|
||||
connect(dataCenter, &DataCenter::userRegisterDone, this, &LoginWidget::userRegisterDone);
|
||||
dataCenter->userRegisterAsync(username, password);
|
||||
}
|
||||
}
|
||||
|
||||
void LoginWidget::userLoginDone(bool ok, const QString& reason)
|
||||
{
|
||||
//此处区分登录是否成功
|
||||
//不成功反馈失败原因
|
||||
if (!ok) {
|
||||
Toast::showMessage("登录失败:" + reason);
|
||||
return;
|
||||
}
|
||||
|
||||
//登录成功,要跳转到主页面
|
||||
MainWidget* mainWidget = MainWidget::getInstance();
|
||||
mainWidget->show();
|
||||
|
||||
this->close();
|
||||
}
|
||||
|
||||
void LoginWidget::userRegisterDone(bool ok, const QString& reason)
|
||||
{
|
||||
if (!ok) {
|
||||
Toast::showMessage("注册失败:" + reason);
|
||||
return;
|
||||
}
|
||||
Toast::showMessage("注册成功!");
|
||||
|
||||
//切换到登录界面
|
||||
this->switchMode();
|
||||
|
||||
//输入框清空一下
|
||||
verifyCodeEdit->clear();
|
||||
verifyCodeWidget->refreshVerifyCode();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user