Add login window, move database open from SelectFormWidget to login window.

This commit is contained in:
Krad
2021-10-14 17:06:53 +08:00
parent d44b1919b0
commit ed63c4c4bc
3 changed files with 233 additions and 1 deletions

View File

@@ -65,7 +65,7 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) :
table->verticalHeader()->setDefaultSectionSize(38);
table->horizontalHeader()->setStretchLastSection(true);
//dat from SQLITE
SQLHelper::Open();
auto model = SQLHelper::getTable("Patient");
model->select();
model->setHeaderData(1,Qt::Horizontal,"ID");

184
src/loginwindow.cpp Normal file
View File

@@ -0,0 +1,184 @@
#include "loginwindow.h"
#include <QVBoxLayout>
#include <QLineEdit>
#include <QToolButton>
#include <QFrame>
#include <qDebug>
#include <QInputMethodEvent>
#include <QtWidgets/QLabel>
#include "guimacros.h"
#include <QCryptographicHash>
#include "db/SQLHelper.h"
#define splitFlag QString("-")
LoginWindow::LoginWindow(QWidget* parent)
: QDialog(parent)
, m_pLoginButton(nullptr)
, m_pVMainLayout(nullptr)
, m_pUserCodeFrame(nullptr)
, m_pUserCodeLayout(nullptr)
, m_pUserCodeEdit(nullptr)
, m_pPassWordEdit(nullptr)
{
initUi();
init();
setWindowFlags(windowFlags() | Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);
//Dialog::Instance()->InitForm();
}
LoginWindow::~LoginWindow()
{
}
void LoginWindow::initUi()
{
QString style = "*{background-color:#3c3c3c; font-family:Microsoft YaHei; color:white;margin:0;font-size:16px;}"
"QLabel#title{font-Size:98px;color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
"stop: 0.0 darkgray, stop: 0.5 lightgray, stop: 1.0 darkgray);}"
"QLabel#warn{color:#930000;background:transparent;font-size:20px;}"
"QFrame#login_frame_username{min-width:700px;max-width:700px;max-height:500px;min-height:500px;"
"border:1px solid #0078d8;border-radius:20px;"
"background:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,\n"
" stop: 0.0 darkgray, stop: 0.5 gray, stop: 1.0 darkgray);"
"}"
"QLineEdit{min-height:100px;max-height:100px; border:1px solid silver;border-radius:10px;font-size:26px;}"
"QLineEdit:enabled{background-color: #515151}"
"QComboBox{text-align:center;min-height:100px;max-height:100px; "
"border:1px solid silver;border-radius:10px;padding:3px}"
"QComboBox:enabled{background-color: #515151}"
"QComboBox::drop-down{width:80px;border-radius:10px}"
"QComboBox QAbstractItemView{min-width:120px;}"
"QComboBox QAbstractItemView::item {min-height:60px;max-height:60px; border:1px solid white;}"
"QToolButton{min-height:100px;max-height:100px;border:1px solid #505050;"
"border-radius:10%;font-size:26px; font-weight:Bold;padding:5px;}"
"QToolButton:hover{background:#505050;}";
setStyleSheet(style);
m_pVMainLayout = new QVBoxLayout(this);
m_pVMainLayout->setContentsMargins(0, 0, 0, 0);
m_pVMainLayout->setSpacing(0);
m_pVMainLayout->addSpacerItem(new QSpacerItem(20,20,QSizePolicy::Minimum,QSizePolicy::Expanding));
QLabel* title = new QLabel(this);
title->setObjectName("title");
title->setText("U S C T");
m_pVMainLayout->addWidget(title,0,Qt::AlignCenter);
m_pUserCodeFrame = new QFrame(this);
m_pUserCodeFrame->setObjectName("login_frame_username");
m_pUserCodeLayout = new QVBoxLayout(m_pUserCodeFrame);
m_pUserCodeLayout->setSpacing(30);
m_pUserCodeLayout->setContentsMargins(20,60,20,20);
warn = new QLabel(this);
warn->setObjectName("warn");
warn->setText("Login failed, username or password error!");
warn->setVisible(false);
m_pUserCodeLayout->addWidget(warn,0,Qt::AlignCenter);
m_pUserCodeEdit = new QLineEdit(m_pUserCodeFrame);
m_pUserCodeEdit->setObjectName("combobox_UserName");
//m_pUserCodeEdit->setLineEdit(new QLineEdit(m_pUserCodeFrame));
m_pUserCodeEdit->setPlaceholderText(tr("Username"));
m_pUserCodeLayout->addWidget(m_pUserCodeEdit);
m_pVMainLayout->addWidget(m_pUserCodeFrame,0,Qt::AlignCenter);
m_pPassWordEdit = new QLineEdit(this);
m_pPassWordEdit->setObjectName("edt_Password");
m_pPassWordEdit->setEchoMode(QLineEdit::Password);
m_pPassWordEdit->setPlaceholderText(tr("Password"));
m_pUserCodeLayout->addWidget(m_pPassWordEdit);
ADD_TOOL_BTN_TO_LAYOUT(login,":/icons/login.png",m_pUserCodeLayout);
m_pUserCodeLayout->removeWidget(btnlogin);
m_pUserCodeLayout->addWidget(btnlogin,0,Qt::AlignCenter);
m_pLoginButton = btnlogin;
// m_pUserCodeLayout->addWidget(m_pLoginButton, 0, Qt::AlignCenter);
m_pVMainLayout->addSpacerItem(new QSpacerItem(20,20,QSizePolicy::Minimum,QSizePolicy::Expanding));
initUserList();
SQLHelper::Open();
}
void LoginWindow::init()
{
connect(m_pLoginButton, SIGNAL(clicked()), this, SLOT(doLogin()));
}
void LoginWindow::initUserList()
{
// userList = UserService::queryUserInfo("");
// for (int i = 0; i < userList.count(); i++)
// {
// QString userCode = userList.at(i)->getUserCode();
// //QString userName = userList.at(i)->getUserName();
// //m_pUserCodeEdit->addItem(userCode + splitFlag + userName);
// m_pUserCodeEdit->addItem(userCode);
// }
}
void LoginWindow::clearInputData()
{
m_pUserCodeEdit->clear();
m_pPassWordEdit->clear();
//m_pUserCodeEdit->setFocus();
}
QString getEncryptedPassword(const QString& password)
{
QByteArray bytePwd = password.toLatin1();
QByteArray bytePwdMd5 = QCryptographicHash::hash(bytePwd, QCryptographicHash::Md5);
return bytePwdMd5.toHex();
}
void LoginWindow::doLogin()
{
QString strUserCode = m_pUserCodeEdit->text();
QString strPassWord = m_pPassWordEdit->text();
QString encryptedPassword = strPassWord;
strPassWord = "12345678";
QString encryptPwd = getEncryptedPassword(strPassWord);
qDebug()<<encryptPwd;
QString sql = QString("select UserCode from Account where UserCode='%1' and Password='%2'")
.arg(strUserCode).arg(encryptPwd);
qDebug()<<sql;
if (SQLHelper::QueryCount(sql)>0)
{
accept();
} else{
warn->setVisible(true);
}
// bool isLoginSuccess = UserService::ValidateAccount(strUserCode, encryptedPassword);
// if (isLoginSuccess)
// {
// accept();
// emit sigUserLoginSuccessful(strUserCode);
// }
// else
// {
// EQ9MessageBox box;
// box.setMessage(tr("login failed, please check input data"));
// box.exec();
// return;
// }
}
//void LoginWindow::onUserCodeFocusOut(QFocusEvent* e)
//{
// Q_UNUSED(e);
//
// QString wholeText = m_pUserCodeEdit->currentText();
// int flagPosition = wholeText.indexOf(splitFlag);
// if(flagPosition > 0)
// {
// QString userCode = wholeText.left(flagPosition);
// m_pUserCodeEdit->setCurrentText(userCode);
// }
//}

48
src/loginwindow.h Normal file
View File

@@ -0,0 +1,48 @@
#ifndef LOGINWINDOW_H
#define LOGINWINDOW_H
#include <QKeyEvent>
#include <QComboBox>
#include <QDialog>
class QVBoxLayout;
class QLineEdit;
class QToolButton;
class QFrame;
class QLabel;
class LoginWindow : public QDialog
{
Q_OBJECT
public:
LoginWindow(QWidget* parent = nullptr);
~LoginWindow() override;
void initUi();
void init();
void clearInputData();
signals:
void sigUserLoginSuccessful(const QString& userCode);
public slots:
void doLogin();
//void onUserCodeFocusOut(QFocusEvent* e);
private:
void initUserList();
private:
QVBoxLayout* m_pVMainLayout;
QFrame* m_pUserCodeFrame;
QVBoxLayout* m_pUserCodeLayout;
QLineEdit* m_pUserCodeEdit;
QLineEdit* m_pPassWordEdit;
QToolButton* m_pLoginButton;
QLabel* warn;
};
#endif // LOGINWINDOW_H