登录界面的制作

1> 将系统给定的工程文件相关代码全部进行注释

2> 将登录框的两个按钮进行实现,登录按钮需要手动连接自定义的槽函数,取消按钮右键转到槽

对于登录按钮对应的槽函数中实现:判断输入的账号是否等于"admin",密码是否为“123456”,如果匹配成功,则输出登录成功后关闭界面

如果匹配失败,输出账号和密码不匹配,请重新输入,并将密码框内容清空

对于取消按钮,在对应的槽函数中,关闭整个界面即可

工程文件

#工程项目包含的类库,core是核心库,gui是图形化界面库
QT       += core gui

#4.0版本后,自动添加的widgets库
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#表示支持C++
CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

#管理源文件
SOURCES += \
    main.cpp \
    widget.cpp
#管理头文件
HEADERS += \
    widget.h
#管理ui界面文件
FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    icon.qrc

头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>      //父类的头文件
#include <QDebug>
#include <QIcon>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }  //命名空间的声明,ui界面生成的头文件中的命名空间
QT_END_NAMESPACE

class Widget : public QWidget   //自定义的类,继承自QWidget类
{
    Q_OBJECT        //管理信号和槽的元对象
    
signals:        
    void my_signal();   //信号函数,只有声明,没有定义
public slots:
    void log_in();      //槽函数,有声明有定义
    void log_out();


public:
    Widget(QWidget *parent = nullptr);      //构造函数声明
    ~Widget();      //析构函数声明
    QLabel *lab1;
    QLabel *lab2;
    QLabel *lab3;
    QLineEdit *edit1;
    QLineEdit *edit2;
    QPushButton *btn1;
    QPushButton *btn2;

private:
    Ui::Widget *ui;     //指向ui界面的指针,如果使用了拖拽界面的组件,则需要该指针来找到

};




#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)     //构造函数的实现
    : QWidget(parent)           //调用父类的构造函数
    , ui(new Ui::Widget)        //给指针成员初始化空间
{
    ui->setupUi(this);      //调用ui界面的设置界面函数
    //设置窗口图标
    this->setWindowIcon(QIcon(":/icon/QQ.png"));
    //设置窗口标题
    this->setWindowTitle("MyQQ");
    //获取窗口的长宽
    qDebug()<<this->size().width();
    qDebug()<<this->size().height();
    //设置标签
    lab1 = new QLabel(this);
    //设置图形标签
    lab1->setPixmap(QPixmap("E:/c++&qt_code/QT/day2/04test/label1.jpg"));
    lab1->resize(800,300);     //设置大小
    lab1->setScaledContents(true);      //设置自适应

    //设置账号标签
    lab2 = new QLabel(this);
    lab2->setPixmap(QPixmap(":/icon/zhanghao.png"));
    lab2->resize(50,50);       //设置大小
    lab2->move(200,350);        //设置位置
    lab2->setScaledContents(true);      //设置自适应
    //设置密码标签
    lab3 = new QLabel(this);
    lab3->setPixmap(QPixmap(":/icon/denglumima.png"));
    lab3->resize(50,50);       //设置大小
    lab3->move(200,450);        //设置位置
    lab3->setScaledContents(true);      //设置自适应

    //设置账号行编辑
    edit1 = new QLineEdit(this);
    edit1->move(300,350);       //设置大小
    edit1->resize(300,50);      //设置位置
    edit1->setPlaceholderText("账号");
    //设置密码行编辑
    edit2 = new QLineEdit(this);
    edit2->move(300,450);       //设置大小
    edit2->resize(300,50);      //设置位置
    edit2->setEchoMode(QLineEdit::Password);    //设置回显模式

    //设置登录按钮
    btn1 = new QPushButton(QIcon(":/icon/denglu.png"),"登录",this);
    btn1->move(200,550);
    btn1->resize(100,50);
    //设置退出按钮
    btn2 = new QPushButton(QIcon(":/icon/quxiao.png"),"退出",this);
    btn2->move(500,550);
    btn2->resize(100,50);

    this->connect(this->btn1,SIGNAL(clicked()),this,SLOT(log_in()));
    this->connect(this->btn2,SIGNAL(clicked()),this,SLOT(log_out()));

}

Widget::~Widget()       //析构函数的定义
{
    delete ui;      //释放类中的指针成员空间
}

void Widget::log_in()
{
    if((edit1->text() == "admin") && (edit2->text() == "123456"))
    {
        qDebug()<<"登录成功";
        log_out();
    }
    else
    {
        qDebug()<<"账号和密码不匹配";
        edit2->clear();
    }

}

void Widget::log_out()
{
    this->close();
}

测试文件

#include "widget.h"     //自定义的头文件

#include <QApplication>     //引入应用程序的头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);     //实例化应用程序的对象
    Widget w;           //使用自定义的类实例化一个对象,在栈区
    w.show();           //调用show函数,使界面显示出来
    return a.exec();        //阻塞等待界面处理,等待信号与槽,等待用户操作界面,等待事件发生
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值