#include "dialog_passwordchange.h" #include "ui_dialog_passwordchange.h" #include #include #include #include Dialog_PasswordChange::Dialog_PasswordChange(const QString &old_password, QWidget *parent) : QDialog(parent), ui(new Ui::Dialog_PasswordChange), m_old_password(old_password), m_new_password("") { ui->setupUi(this); setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); QRegExp rx("[a-zA-Z0-9!@#%^&*()_]+$"); //创建一个正则表达式对象rx qReg = new QRegExpValidator(rx, this); //创建一个过滤器对象 m_lineEditList<lineEdit_oldPassword<lineEdit_newPassword<lineEdit_confirmPassword; foreach(QLineEdit* item, m_lineEditList) { item->setEchoMode(QLineEdit::Password); item->setMaxLength(20); item->setValidator(qReg); } m_lineEditList[0]->setPlaceholderText(tr("Type old password")); m_lineEditList[1]->setPlaceholderText(tr("Type new password")); m_lineEditList[2]->setPlaceholderText(tr("Retype new password")); } Dialog_PasswordChange::~Dialog_PasswordChange() { delete qReg; delete ui; } QString Dialog_PasswordChange::getNewPassword() { return m_new_password; } void Dialog_PasswordChange::on_cbtn_showPassword_toggled(bool checked) { foreach(QLineEdit* item, m_lineEditList) item->setEchoMode(checked ? QLineEdit::Normal : QLineEdit::PasswordEchoOnEdit); } void Dialog_PasswordChange::on_lineEdit_oldPassword_textChanged(const QString &arg1) { ui->btn_ok->setEnabled(arg1.length() >= 8 && ui->lineEdit_newPassword->text().length() >= 8 && ui->lineEdit_confirmPassword->text().length() >= 8); } void Dialog_PasswordChange::on_lineEdit_newPassword_textChanged(const QString &arg1) { ui->btn_ok->setEnabled(arg1.length() >= 8 && ui->lineEdit_newPassword->text().length() >= 8 && ui->lineEdit_confirmPassword->text().length() >= 8); } void Dialog_PasswordChange::on_lineEdit_confirmPassword_textChanged(const QString &arg1) { ui->btn_ok->setEnabled(arg1.length() >= 8 && ui->lineEdit_newPassword->text().length() >= 8 && ui->lineEdit_confirmPassword->text().length() >= 8); } void Dialog_PasswordChange::on_btn_ok_clicked() { if(ui->lineEdit_oldPassword->text() != m_old_password) QMessageBox::warning(this, tr("Warning"), tr("Old password incorrect.\n" "Please try again.")); else if(ui->lineEdit_newPassword->text() != ui->lineEdit_confirmPassword->text()) QMessageBox::warning(this, tr("Warning"), tr("New password and confirm password are not matched.\n" "Please make sure the two passwords are the same.")); else { m_new_password = ui->lineEdit_newPassword->text(); done(1); } } void Dialog_PasswordChange::on_btn_cancel_clicked() { done(0); } void Dialog_PasswordChange::on_lineEdit_oldPassword_inputRejected() { QToolTip::showText(mapToGlobal(ui->lineEdit_oldPassword->pos()), tr("Password only allowed to use numbers, English and special characters.")); } void Dialog_PasswordChange::on_lineEdit_newPassword_inputRejected() { QToolTip::showText(mapToGlobal(ui->lineEdit_newPassword->pos()), tr("Password only allowed to use numbers, English and special characters.")); } void Dialog_PasswordChange::on_lineEdit_confirmPassword_inputRejected() { QToolTip::showText(mapToGlobal(ui->lineEdit_confirmPassword->pos()), tr("Password only allowed to use numbers, English and special characters.")); }