Qt学习笔记——实现用户从对话框登录验证进入主界面

步骤:

1. 点“new project”,新建“Qt Widgets Application”,点右下角的按钮“choose”;自定义一个工程名YonghuLogin,基类名选择“QWidget”,类名随意,点“下一步”“完成”;运行就生成了一个以QWidget为基类的主界面。

2. 点“文件—新建项目—Qt—Qt设计师界面类”,点右下角“choose”,选择“Dialog without Buttons”,自定义类名为logindialog,点“完成”生成了一个新的.h与.cpp与.ui三个文件;在这个对话框上添加用户登录界面所需的按钮控件。

3. 添加文本输入框、登陆,退出按钮  后,在logindialog.cpp中添加click函数如下:

     点击“登陆”按钮,在下方 Signals and slots editor 框中点击“+”下拉关联信号和槽,即Sender发送方设为 enterBtn,Signal信号 设为 clicked(),Receive接收方 设为 myDlg,Slot槽 设为accept(),如下图:

                                          

代码如下:

 
 
#include "logindialog.h"
#include "ui_logindialog.h"
//______________
#include<QMessageBox>  //QmessageBox的头文件
//______________
 
 
 
 
 
 
 
 
//构造函数
LoginDialog::LoginDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::LoginDialog)
{
   ui->setupUi(this);
   ui->pwdLineEdit->setEchoMode(QLineEdit::Password);//在构造函数里将密码框的显示设置为黑点,不可见
}

//析构函数
LoginDialog::~LoginDialog()
{
   delete ui;
}


//登录
void LoginDialog::on_loginBtn_clicked()
{
    //accept();//accept作用是:将当前的窗口隐藏(这样就做到子窗口功能消失这个功能),并且发送accepted信号,也就是设置设置结果代码为Accepted。
    if(ui->usrLineEdit->text()/*.trimmed()*/==tr("QT")&&ui->pwdLineEdit->text()==tr("123456"))
    {
      //加trimmed()可以去除用户名字符串开头和结尾的空白字符
      accept();
    }
    else
    {
      //如果不正确,弹出警告框
      QMessageBox::warning(this,tr("warning"),tr("用户名或密码错误!"),QMessageBox::Yes);
      //如果还想清空用户名、密码框,并且光标自动跳转到用户名输入框,就继续下面
      ui->usrLineEdit->clear();
      ui->pwdLineEdit->clear();
      ui->usrLineEdit->setFocus();//将光标移到用户名框内
    }
}
 
 


//退出
void LoginDialog::on_exitBtn_clicked()
{
  close();
}
 
 

在main.cpp文件中,修改main(),如下:

#include "widget.h"
#include <QApplication>
//_______
#include "logindialog.h"
//_______
 
 
 
 
 
 


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    //w.show();//显示主界面
    //return a.exec();
    // 改写如下
 
 
    LoginDialog logindlg;//建立自己新建的类的对象
    if(logindlg.exec()==QDialog::Accepted) //利用 Accepted 信号判断 enterBtn 是否被按
    {
      w.show();  //如果被按下,显示主窗口
      return a.exec();  //程序一直执行,直到主窗口关闭
    }
    else
    {
      return 0;//如果没被按下,则不会进入主窗口,整个程序结束运行
    }
}

【注:】注意要添加头文件


猜你喜欢

转载自blog.csdn.net/liang841451955/article/details/79999646
今日推荐