今日任务
1.
使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数
将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空
2.思维导图
功能代码:
- #include "widget.h"
- #include "ui_widget.h"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
- this->setFixedSize(560,430);
- this->setStyleSheet("background-color:#faf7ec");
- this->setWindowFlag(Qt::FramelessWindowHint);//无边框
- QMovie *movie = new QMovie(":/111/cai.gif");
- ui->backLabel->setMovie(movie);
- ui->backLabel->setScaledContents(true);
- movie->start();
-
- ui->closeButton->setStyleSheet("border-image:url(:/111/basketball.png)");
-
-
- ui->avatorLabel->resize(60,60);
- ui->avatorLabel->setStyleSheet("border-image:url(:/111/user.png);border-radius:30px");
-
- ui->accountLabel->setPixmap(QPixmap(":/111/account.jpg"));
- //ui->accountLabel->resize(40,40);
- ui->accountLabel->setScaledContents(true);
-
- ui->passwdLabel->setPixmap(QPixmap(":/111/passwd.jpg"));
- //ui->passwdLabel->resize(40,40);
- ui->passwdLabel->setScaledContents(true);
-
- ui->accoountLine->setPlaceholderText("账号");
- ui->passwdLine->setPlaceholderText("密码");
- ui->passwdLine->setEchoMode(QLineEdit::Password);
-
- ui->loginLabel->setPixmap(QPixmap(":/111/2.png"));
- ui->loginLabel->setScaledContents(true);
-
- ui->loginButton->setStyleSheet("background-color:#409EFF;border-radius:5px");
-
- connect(ui->closeButton,SIGNAL(clicked()),this,SLOT(close()));
-
- connect(ui->loginButton,&QPushButton::clicked,this,&Widget::loginButton_slot);
-
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
-
- void Widget::loginButton_slot()
- {
- if(ui->accoountLine->text()=="admin"&&ui->passwdLine->text()=="123456"){
- qDebug() << "登录成功" <
- this->close();
- }else{
- qDebug() << "账号或者密码错误" <
- ui->passwdLine->setText("");
- }
- }
-
头文件:
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include
- #include
- #include
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class Widget; }
- QT_END_NAMESPACE
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = nullptr);
- ~Widget();
-
- public slots:
- void loginButton_slot();
-
-
- private:
- Ui::Widget *ui;
- };
- #endif // WIDGET_H
UI界面布局:

运行结果:


今日思维导图:

课程代码:参考一下可以
头文件:
- #ifndef WIDGET_H
- #define WIDGET_H
-
-
- #include
- #include
- #include
//语音播报类 -
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class Widget; }
- QT_END_NAMESPACE
-
-
- class Widget : public QWidget
- {
- Q_OBJECT //有关信号和槽的宏
-
-
- public:
- Widget(QWidget *parent = nullptr);
- ~Widget();
-
-
- signals: //表示该权限下都是信号函数
- void my_signal(); //自定义一个信号函数
-
-
-
-
- public slots: //表示该权限下是公共的槽函数
- void my_slot(); //自定义一个槽函数
- void Btn4_slot(); //btn4对应的槽函数声明
-
-
-
-
- private slots:
- void on_Btn2_clicked(); //系统定义的槽函数声明
-
-
- void on_Btn6_clicked(); //按钮6对应槽函数的声明
-
-
- void on_Btn7_clicked();
-
-
- private:
- Ui::Widget *ui;
-
-
-
-
- QPushButton *btn3; //定义一个按钮3
-
-
- //定义一个语音播报者
- QTextToSpeech *speecher;
- };
- #endif // WIDGET_H
源文件
- #include "widget.h"
- #include "ui_widget.h"
-
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
-
-
- //给语音播报者实例一个空间
- speecher = new QTextToSpeech(this);
-
-
- //实例化一个按钮
- btn3 = new QPushButton("按钮3",this);
- btn3->move(ui->Btn2->x(), ui->Btn2->y()+ui->Btn2->height()+10);
- btn3->resize(ui->Btn2->width(),ui->Btn2->height());
-
-
- //手动连接信号和系统槽,基于qt4版本 是不友好的连接
- //函数原型:[static] QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
- //参数1:是一个组件的指针 信号的发送者
- //参数2:信号函数,需要宏函数转换
- //参数3:是一个组件的指针 信号的接受者
- //参数4:槽函数,需要宏函数转换
- //connect(btn3, SIGNAL(clicked()), this, SLOT(close()));
-
-
- //手动连接信号和系统槽,基于qt4版本 是不友好的连接
- this->connect(btn3, SIGNAL(clicked()), this,SLOT(my_slot()));
-
-
- //手动连接信号和自定义槽,基于qt5版本 是友好的连接
- //函数原型:[static] QMetaObject::Connection QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)
- //参数1:是一个组件的指针 信号的发送者
- connect(ui->Btn4, &QPushButton::clicked, this, &Widget::Btn4_slot);
-
-
- //手动连接信号和lambda表达式
- connect(ui->Btn5, &QPushButton::clicked, [&](){
- ui->Btn5->setText("55555");
- });
-
-
- //手动连接自定义的信号
- connect(this, &Widget::my_signal,[&](){
- ui->Btn6->resize(ui->Btn6->width()+5, ui->Btn6->height()+5);
- });
- }
-
-
- Widget::~Widget()
- {
- delete ui;
- }
-
-
- //自定义槽函数的实现
- void Widget::my_slot()
- {
- this->close();
- }
-
-
- //按钮4对应的槽函数实现 #include
//语音播报类 - void Widget::Btn4_slot()
- {
- //this->close();
-
-
- static int num = 0;
- if(num%3 == 0)
- {
- speecher->say("咳咳咳");
- }
- else if (num%3 == 1)
- {
- speecher->say(ui->Btn2->text());
- }
- else if (num%3 == 2)
- {
- speecher->say(this->btn3->text());
- }
-
-
- ++num;
-
-
- }
-
-
- //按钮2对应的槽函数
- void Widget::on_Btn2_clicked()
- {
- //让按钮1变色
- //ui->Btn1->setStyleSheet("background-color:red");
- static int num = 0;
- if(num%3 == 0)
- {
- ui->Btn1->setStyleSheet("background-color:red");
- }
- else if (num%3 == 1)
- {
- ui->Btn1->setStyleSheet("background-color:green");
- }
- else if (num%3 == 2)
- {
- ui->Btn1->setStyleSheet("background-color:blue");
- }
-
-
- ++num;
-
-
- }
-
-
- //按钮6对应的槽函数处理
- void Widget::on_Btn6_clicked()
- {
- emit my_signal(); //触发(发射)自定义的信号
- }
-
-
- void Widget::on_Btn7_clicked()
- {
- //断开连接
- disconnect(ui->Btn4, &QPushButton::clicked, this, &Widget::Btn4_slot);
- }
-
相关阅读:
JavaEE中常见的锁策略
Java反应式编程(1)
Java基础实战项目-------网上订餐系统
通达OA RCE远程代码执行漏洞分析
基于Spring Boot+ Vue的健身房管理系统与实现
Android 12.0 Launcher3 去掉Hotseat功能
【C++】list的介绍及使用 | 模拟实现list(万字详解)
STM32Cube串口中断只执行一次问题
Python开发技术—文件和异常2
ZPL II 语言编程基础
-
原文地址:https://blog.csdn.net/weixin_53762703/article/details/133912495