QT的学习

代码练习

完成一个使用qss的登陆窗口界面。
使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数
将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空

提醒窗口

头文件
#ifndef INFOR_H
#define INFOR_H

#include <QWidget>
#include <QDebug>
namespace Ui {
class infor;
}

class infor : public QWidget
{
    Q_OBJECT

public:
    explicit infor(QWidget *parent = nullptr);
    ~infor();
public slots:
    void Loged_rec1();
public slots:
    void Loged_rec2();
public slots:
    void push_close();
private:
    Ui::infor *ui;
};

#endif // INFOR_H
源文件
#include "infor.h"
#include "ui_infor.h"

infor::infor(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::infor)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground);
    connect(ui->pushButton,&QPushButton::clicked,this,&infor::push_close);
}

infor::~infor()
{
    delete ui;
}

void infor::Loged_rec1()
{
     qDebug() << "1 called";
    ui->label_2->setText("登陆成功!");
    this->show();
}

void infor::Loged_rec2()
{
     qDebug() << "2 called";
    ui->label_2->setText("账号或密码错误!");
    this->show();
}

void infor::push_close()
{
    qDebug() << "3 called";
    this->close();
}


登录界面

头文件
#ifndef LOGING_H
#define LOGING_H

#include <QWidget>
#include <QDebug>
namespace Ui {
class Loging;
}

class Loging : public QWidget
{
    Q_OBJECT

public:
    explicit Loging(QWidget *parent = nullptr);
    ~Loging();
signals:
    void Loged1();
signals:
    void Loged2();
public slots:
    void LogBtn_in();
public slots:
    void Log_rec();
private:
    Ui::Loging *ui;
};

#endif // LOGING_H
源文件
#include "loging.h"
#include "ui_loging.h"

Loging::Loging(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Loging)
{

    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);

    this->setAttribute(Qt::WA_TranslucentBackground);
    ui->lineEdit->setPlaceholderText("支持QQ号/邮箱/手机号登录");
    ui->lineEdit_2->setPlaceholderText("请输入密码");
    ui->lineEdit_2->setEchoMode(QLineEdit::Password);
    connect(ui->pushButton,&QPushButton::clicked,this,&Loging::LogBtn_in);
}

Loging::~Loging()
{
    delete ui;

}

void Loging::LogBtn_in()
{
    qDebug() << "LogBtn_in called";
    if(QString(ui->lineEdit->text())=="admin")
    {
        if(QString(ui->lineEdit_2->text())=="123456")
        {
           this->close();
           emit Loged1();
        }
        else
        {
            emit Loged2();
            ui->lineEdit_2->clear();//清空密码框内容
        }
    }
    else
    {
        emit Loged2();
        ui->lineEdit_2->clear();//清空密码框内容
    }
}

void Loging::Log_rec()
{
    this->show();
}

初始界面

头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTextToSpeech>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
signals:
    void Log_in();
private slots:
    void on_pushButton_2_clicked();

    void PushbuttonClicked();

private:
    Ui::Widget *ui;

    QTextToSpeech *speaker;
};
#endif // WIDGET_H
源文件
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    ,speaker(new QTextToSpeech(this))
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);

    this->setAttribute(Qt::WA_TranslucentBackground);
    connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(on_pushButton_2_clicked()));
    connect(ui->pushButton,&QPushButton::clicked,this,&Widget::PushbuttonClicked);
}

Widget::~Widget()
{
    delete ui;
}


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

void Widget::PushbuttonClicked()
{
    speaker->say(ui->pushButton->text());
    this->close();
    emit Log_in();
}

主函数

#include "widget.h"
#include "loging.h"
#include "infor.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    Loging l;
    w.show();
    infor t;
    QObject::connect(&w,&Widget::Log_in,&l,&Loging::Log_rec);
    QObject::connect(&l,&Loging::Loged1,&t,&infor::Loged_rec1);
    QObject::connect(&l,&Loging::Loged2,&t,&infor::Loged_rec2);
    return a.exec();
}

效果演示

登陆页面制作哈哈哈 #学习打卡 #日常学习 - 抖音 (douyin.com)

思维导图

相关推荐

  1. Qt学习Qt坐标系统

    2024-03-25 07:28:03       28 阅读
  2. Qt系统托盘学习

    2024-03-25 07:28:03       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 07:28:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 07:28:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 07:28:03       82 阅读
  4. Python语言-面向对象

    2024-03-25 07:28:03       91 阅读

热门阅读

  1. 怎么解决父元素引起的高度坍塌?

    2024-03-25 07:28:03       39 阅读
  2. 20.Ubuntu下安装GCC

    2024-03-25 07:28:03       44 阅读
  3. C++测试代码

    2024-03-25 07:28:03       41 阅读
  4. Rancher(v2.6.3)——Rancher部署Redis(单机版)

    2024-03-25 07:28:03       40 阅读
  5. 中高级前端工程师招聘

    2024-03-25 07:28:03       44 阅读
  6. 报道:GPT-5将于今年年中发布

    2024-03-25 07:28:03       35 阅读
  7. Compose UI 之 Checkbox 复选框 & RadioButton 单选框

    2024-03-25 07:28:03       38 阅读