当前位置: 首页 > news >正文

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_OBJECTpublic: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_OBJECTpublic: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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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();
}

效果演示

登录第二版

思维导图

http://www.lryc.cn/news/327862.html

相关文章:

  • redis在docker安装并启动流程
  • Spring高频面试题
  • Qt篇——Qt无法翻译tr()里面的字符串
  • 农村分散式生活污水分质处理及循环利用技术指南
  • 深圳区块链交易所app系统开发,撮合交易系统开发
  • 使用Shell脚本进行MySql权限修改
  • 项目中线程池的应用
  • 前端 JS 压缩图片的思路(附源码)
  • C语言结合体和枚举的魅力展现
  • 基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用
  • 静态住宅IP优缺点,究竟要怎么选?
  • day07-缓存商品、购物车
  • 平台介绍-搭建赛事运营平台(3)
  • 数值分析复习:逼近理论的应用——最小二乘问题、解超定、欠定方程组
  • 设计模式-设配器模式
  • BEVFormer v2论文阅读
  • FFMPEG C++封装(二)
  • 使用unplugin-auto-import页面不引入api飘红
  • 八大技术趋势案例(虚拟现实增强现实)
  • Vue实现SQL语句关键字高亮显示?
  • 开始时间大于结束时间
  • Java中 List 集合,通过 Stream 流进行排序总结
  • 1688中国站按关键字搜索工厂数据 API
  • YOLOV8逐步分解(2)_DetectionTrainer类初始化过程
  • Java是用什么语言写的?PHP呢?
  • SpringBoot Redis的使用
  • 数据仓库——维度表特性
  • 从电荷角度理解开关电容中的电荷守恒
  • 1.7.1 python 作业 15道
  • synchronized 和 ReentrantLock 的区别是什么