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());
}

相关推荐

  1. CSS实现登录样式

    2024-07-17 14:48:06       29 阅读
  2. CSS编写登录样式

    2024-07-17 14:48:06       41 阅读
  3. 基本样式+动态效果

    2024-07-17 14:48:06       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 14:48:06       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 14:48:06       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 14:48:06       62 阅读
  4. Python语言-面向对象

    2024-07-17 14:48:06       72 阅读

热门阅读

  1. 单片机编程分层思想APP BSP HAL 三层结构

    2024-07-17 14:48:06       24 阅读
  2. 使用vue router需要注意的点

    2024-07-17 14:48:06       22 阅读
  3. 关于电路设计中,按键与电阻的问题

    2024-07-17 14:48:06       21 阅读
  4. html超文本传输协议

    2024-07-17 14:48:06       20 阅读
  5. 有关环境变量

    2024-07-17 14:48:06       20 阅读
  6. 使用Python和Selenium爬取京东商品数据

    2024-07-17 14:48:06       25 阅读
  7. Python应用—从pdf中保存图片

    2024-07-17 14:48:06       22 阅读
  8. 数据结构第32节 无锁编程

    2024-07-17 14:48:06       26 阅读
  9. PIMPL 模式 以及Q_DECLARE_PUBLIC 与 Q_DECLARE_PRIVATE

    2024-07-17 14:48:06       23 阅读