[分布式即时通讯系统] 注册类完善

我们在qss里添加err_tip样式,根据不同的状态做字体显示

cpp 复制代码
#err_tip[state='normal']{
   color: green;
}
#err_tip[state='err']{
   color: red;
}

接下来项目中添加global.h和global.cpp文件,global.h声明repolish函数,global.cpp用来定义这个函数。

.h中的声明

cpp 复制代码
#ifndef GLOBAL_H
#define GLOBAL_H
#include <QWidget>
#include <functional>
#include "QStyle"

extern std::function<void(QWidget*)> repolish;

#endif // GLOBAL_H

.cpp中的定义

cpp 复制代码
#include "global.h"

std::function<void(QWidget*)> repolish =[](QWidget *w){
    w->style()->unpolish(w);
    w->style()->polish(w);
};

这里要注意的是,因为我们的global.h文件会被包含在多个.cpp文件中,因此我们的repolish包装器的声明和定义需要分开来,否则在链接的时候会报重定义的错。

extern 关键字用于声明一个变量或函数是在另一个文件或同一个文件的其他位置定义的。

在Register的构造函数中添加样式设置。

cpp 复制代码
ui->err_tip->setProperty("state","normal");
repolish(ui->err_tip);

接下来实现获取验证码的逻辑,ui里关联get_code按钮的槽事件,并实现槽函数

cpp 复制代码
void RegisterDialog::on_get_code_clicked()
{
    // 检查用户输入是否正确
    // 验证邮箱的正则表达式
    auto email = ui->email_edit->text();
    QRegularExpression regex(R"((\w+)(\.|_)?(\w*)@(\w+)(\.(w+))+)");
    bool match = regex.match(email).hasMatch();
    if (match) {
        // 发送http验证码
    }
    else {
        // 提示用户邮箱格式不正确,采用tr函数可以实现转语言
        showTip(tr("邮箱格式不正确"), false);
    }
}

在RegisterDialog中添加showTip函数

cpp 复制代码
void RegisterDialog::showTip(QString str, bool b_ok)
{
    if(b_ok){
        ui->err_tip->setProperty("state","err");
    }else{
        ui->err_tip->setProperty("state","normal");
    }
    ui->err_tip->setText(str);
    repolish(ui->err_tip);
}
相关推荐
心态还需努力呀15 小时前
CANN仓库通信库:分布式训练的梯度压缩技术
分布式·cann
Coder_Boy_19 小时前
基于SpringAI的在线考试系统-相关技术栈(分布式场景下事件机制)
java·spring boot·分布式·ddd
程序员泠零澪回家种桔子1 天前
分布式事务核心解析与实战方案
分布式
凯子坚持 c1 天前
CANN 生态中的分布式训练利器:深入 `collective-ops` 项目实现高效多卡协同
分布式
惊讶的猫1 天前
rabbitmq实践小案例
分布式·rabbitmq
禁默1 天前
打破集群通信“内存墙”:手把手教你用 CANN SHMEM 重构 AIGC 分布式算子
分布式·重构·aigc
惊讶的猫1 天前
rabbitmq初步介绍
分布式·rabbitmq
小镇敲码人1 天前
华为CANN框架中HCCL仓库的全面解析:分布式通信的引擎
分布式·华为
User_芊芊君子1 天前
【分布式训练】CANN SHMEM跨设备内存通信库:构建高效多机多卡训练的关键组件
分布式·深度学习·神经网络·wpf
酷酷的崽7981 天前
CANN 开源生态解析(四):`cann-dist-train` —— 构建高效可扩展的分布式训练引擎
分布式·开源