Qt Splash样式的登录窗

Qt Splash样式的登录窗实现

目录

0 结果

1. 设计界面

2.鼠标拖动界面

3. 密码MD5加密

4. 保用户名和密码到注册表


0 结果

1. 设计界面

继承自QDialog,图片使用QLabel加载,windowFlag样式为 Qt::SplashScreen

TLoginForm::TLoginForm(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::TLoginForm)
{
    ui->setupUi(this);

    this->setAttribute(Qt::WA_DeleteOnClose);
    this->setWindowFlag(Qt::SplashScreen);

    QApplication::setOrganizationName("CC");
    QApplication::setApplicationName("CC_SPLAN");
    readSettings();//读取配置
}

2.鼠标拖动界面

涉及到3个事件 mousePressEvent、mouseMoveEvent、mouseReleaseEvent

void TLoginForm::mousePressEvent(QMouseEvent *event)
{
    if(event->button()== Qt::LeftButton)
    {
        m_moving =true;
        m_lastPos =event->globalPosition().toPoint() - this->pos();
    }
    return QDialog::mousePressEvent(event);
}
void TLoginForm::mouseMoveEvent(QMouseEvent *event)
{
    QPoint eventPos =event->globalPosition().toPoint();
    if(m_moving && (event->buttons()&Qt::LeftButton)
        &&(eventPos-m_lastPos).manhattanLength()>QApplication::startDragDistance())
    {
        move(eventPos-m_lastPos);
        m_lastPos = eventPos-this->pos();
    }
    return QDialog::mouseMoveEvent(event);
}

void TLoginForm::mouseReleaseEvent(QMouseEvent *event)
{
    m_moving = false;
    event->accept();
}

3. 密码MD5加密

QString TLoginForm::encrypt(const QString &str)
{
    QByteArray btArray= str.toLocal8Bit();
    QCryptographicHash hash(QCryptographicHash::Md5);
    hash.addData(btArray);
    QByteArray resultArray = hash.result();
    QString md5 = resultArray.toHex();
    return md5;
}

4. 保用户名和密码到注册表

void TLoginForm::readSettings()
{
    QSettings settings;
    bool saved = settings.value("saved",false).toBool();
    m_user =settings.value("UserName","user").toString();
    QString defaultPSWD= encrypt("12345");
    m_pswd = settings.value("PSWD",defaultPSWD).toString();
    if(saved)
        ui->editUser->setText(m_user);
    ui->chkBoxSave->setChecked(saved);
}

void TLoginForm::writeSettings()
{
    QSettings settings;
    settings.setValue("UserName",m_user);
    settings.setValue("PSWD",m_pswd);
    settings.setValue("saved",ui->chkBoxSave->isChecked());
}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

castlooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值