【QT学习教程1】制作用户登陆界面

目录

0. 前言

1. 登录界面的创建和设计

2. 子界面的创建与设计

3. 子界面的.cpp文件和.h文件的编写

4. 修改Main函数

5. 编译测试结果


0. 前言

本文代码部分参考这篇博文。

1. 登录界面的创建和设计

创建过程在前面博客中已经写过,这里贴出关键步骤图。

首先,关于基类的选择问题,参考这篇博文。此项目中,选择QDialog作为基类。

【QT学习教程1】制作用户登陆界面_第1张图片

VS2019的项目中如下图所示。

【QT学习教程1】制作用户登陆界面_第2张图片

 双击进入QtLogin.ui(若进入后闪退,修改打开方式,具体操作参考我前面的博客),制作成如下图所示的界面,并在右侧明细栏内修改名称。

【QT学习教程1】制作用户登陆界面_第3张图片

 由于“登录“按键是启动另一个界面,所以需要自己定义槽函数;而”退出“按键是不需要的,因此先设置好”退出“按键的实现。在下侧”信号与槽“一栏中添加如下图所示的功能,它的意思是:当Exit_Btn按键被点击(clicked)后,QtLoginClass作为接收者,close()函数被调用,于是界面就会关闭。

【QT学习教程1】制作用户登陆界面_第4张图片

2. 子界面的创建与设计

右键VS2019的项目 — 添加 — 新建项

【QT学习教程1】制作用户登陆界面_第5张图片

选择 Qt — Qt Widget Form File,修改名称为:ControlWindow.ui

【QT学习教程1】制作用户登陆界面_第6张图片

 此时会自动弹出该ui文件等待编辑。首先,修改该ui界面的名称为:ControlWindow

 【QT学习教程1】制作用户登陆界面_第7张图片

 其次,由于这里只是实现点击登录后显示该子界面,所以子界面的设计不必太复杂,只添加布局中的Label即可,如下图所示。

【QT学习教程1】制作用户登陆界面_第8张图片

3. 子界面的.cpp文件和.h文件的编写

在前文中,只是创建了子界面的ui文件,并没有创建子界面的.cpp文件和.h文件,所以这里需要手动创建。同样地,右键Qt项目 — 添加 — 新建项(直接改文件名,修改后缀即可)。此时VS2019项目中明细栏有如下文件:

【QT学习教程1】制作用户登陆界面_第9张图片

第一,在ControlWindow.h文件内添加内容:

#pragma once

#include 
#include "ui_ControlWindow.h"

class ControlWindow : public QWidget
{
    Q_OBJECT

public:
    ControlWindow(QWidget* parent = Q_NULLPTR);

private:
    Ui::ControlWindow ui;
};

第二,在ControlWindow.cpp文件内添加:

#include "ControlWindow.h"

ControlWindow::ControlWindow(QWidget* parent)
    : QWidget(parent)
{
    ui.setupUi(this);
}

第三,在QtLogin.h中修改:

#pragma once

#include 
#include "ui_Login.h"

class Login : public QDialog
{
    Q_OBJECT

public:
    Login(QWidget *parent = Q_NULLPTR);

private:
    Ui::LoginClass ui;

public slots:
    void on_clicked();
};

第四:在QtLogin.cpp中修改:

#include "Login.h"
#include "QMessageBox"

Login::Login(QWidget *parent)
    : QDialog(parent)
{
    ui.setupUi(this);
    ui.Passport_Edit->setEchoMode(QLineEdit::Password);                 //让密码变成星号,无法显示
    QObject::connect(ui.Sign_in_Btn, SIGNAL(clicked()), this, SLOT(on_clicked()));
}

void Login::on_clicked() {
    if (ui.User_Edit->text() == tr("qt") && ui.Passport_Edit->text() == tr("123456"))
    {
        accept();
    }
    else
    {
        QMessageBox::warning(this, tr("warning!"), tr("username or passport is wrong!"), QMessageBox::Yes);
    }
}

4. 修改Main函数

将main函数修改为:

#include "QtLogin.h"
#include 
#include "ControlWindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtLogin w;
    ControlWindow cw;
    if (w.exec() == QDialog::Accepted) {
        cw.show();
        return a.exec();
    }
}

上述代码的解释:

首先是w.exec()函数,这个函数代表循环等待,也就是等待用户的操作。

其次是QDialog::Accepted,表明只要对话框的按键被按下,就会发出accepted信号,从而if语句成立,执行if语句内的程序。

5. 编译测试结果

希望此部分是你自己测试出来的,略。

你可能感兴趣的:(qt,学习,开发语言)