嵌入式:QT Day2

news/2025/3/12 12:18:04/

 一、继续完善登录框,当登陆成功时,关闭登陆页面,跳转到新的界面中

源码:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>           //用于打印输出
#include <QIcon>            //图标头文件
#include <QPushButton>      //按钮类头文件
#include <QLineEdit>        //行编辑器类
#include <QLabel>           //标签文件class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//标签类QLabel *lab1;QLabel *lab2;QLabel *lab3;//行编辑器类QLineEdit *edit1;QLineEdit *edit2;//按钮类QPushButton *btn1;QPushButton *btn2;//自定义信号
signals:void jump();   //跳转信号public slots:void cancel_slot();void login_slot();};
#endif // WIDGET_H

second.h

#ifndef SECOND_H
#define SECOND_H#include <QWidget>
#include <QDebug>           //用于打印输出
#include <QIcon>            //图标头文件
#include <QPushButton>      //按钮类头文件
#include <QLineEdit>        //行编辑器类
#include <QLabel>           //标签文件namespace Ui {
class Second;
}class Second : public QWidget
{Q_OBJECTpublic:explicit Second(QWidget *parent = nullptr);~Second();//标签类QLabel *lab1;public slots:void jump_slot();private:Ui::Second *ui;
};#endif // SECOND_H

widget.cpp

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{//设置整体大小、标题及图标this->setFixedSize(700, 600);this->setWindowTitle("IKUN真爱小屋❤");this->setWindowIcon(QIcon(":/icon/1.jpeg"));this->setWindowOpacity(0.95);              //设置透明度//设置Logo标签lab1 = new QLabel(this);lab1->resize(700,200);lab1->setPixmap(QPixmap(":/icon/2.JPG"));lab1->setScaledContents(true);         //设置内容自适应//设置用户和密码所图标lab2 = new QLabel(this);lab2->resize(50,50);lab2->setPixmap(QPixmap(":/icon/username.png"));lab2->setScaledContents(true);lab2->move(150,260);lab3 = new QLabel(this);lab3->resize(50,50);lab3->setPixmap(QPixmap(":/icon/passwd.jpg"));lab3->setScaledContents(true);lab3->move(150,360);//设置行编辑器edit1 = new QLineEdit(this);edit1->resize(190, 40);edit1->move(280, 265);edit1->setStyleSheet("border : none; ""border-bottom: 2px solid grey;");edit1->setPlaceholderText("账号:");edit2 = new QLineEdit(this);edit2->resize(190, 40);edit2->move(280, 365);edit2->setStyleSheet("border : none; ""border-bottom: 2px solid grey;");edit2->setPlaceholderText("密码:");edit2->setEchoMode(QLineEdit::Password);//设置按钮 登录btn1 = new QPushButton(this);btn1->setText("登录");btn1->resize(130,40);btn1->move(150, 490);btn1->setIcon(QIcon(":/icon/login.png"));//手动将登录与自定义的槽函数进行连接,该连接是友好的连接qt-5connect(btn1, &QPushButton::clicked, this, &Widget::login_slot);//设置按钮 取消btn2 = new QPushButton(this);btn2->setText("取消");btn2->resize(130,40);btn2->move(440, 490);btn2->setIcon(QIcon(":/icon/cancel.png"));//手动将取消按钮的clicked信号与自定义的槽函数进行连接-qt4connect(btn2, SIGNAL(clicked()), this, SLOT(cancel_slot()));}Widget::~Widget()
{
}//自定义槽函数的实现
void Widget::cancel_slot(){this->close();
}//自定义槽函数的实现
void Widget::login_slot(){if(this->edit1->text() == "admin" && this->edit2->text() == "123456"){qDebug() << "登陆成功!";emit jump();           //发射跳转函数信号this->close();}else{qDebug() << "登陆失败,请重新登录!";this->edit2->clear();}
}

second.cpp

#include "second.h"
#include "ui_second.h"Second::Second(QWidget *parent) :QWidget(parent),ui(new Ui::Second)
{ui->setupUi(this);//整体设置this->setWindowTitle("登录成功提示");this->setWindowIcon(QIcon(":/icon/3.jpeg"));//设置跳转标签lab1 = new QLabel(this);lab1->setText("登陆成功!");lab1->resize(390,300);lab1->setAlignment(Qt::AlignCenter);
}Second::~Second()
{delete ui;
}//跳转槽信号
void Second::jump_slot()
{this->show();
}

main.cpp

#include "widget.h"
#include "second.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();Second s;    //实例化第二个界面//将第一个界面发射信号与第二个界面的展示槽函数连接QObject::connect(&w, &Widget::jump, &s, &Second::jump_slot);return a.exec();
}

二、新建一个工程文件,将默认提供的代码注释

三、思维导图

 

 


http://www.ppmy.cn/news/980897.html

相关文章

iOS transform rotate总结

研究了一下transform的旋转设置&#xff0c;调了半天还以为是旋转写错了&#xff0c;发现是两个不同的view对象写错了&#xff0c;不管怎么说&#xff0c;还是记录一下旋转相关的操作吧。 参数都是弧度。 以一个图片来举例。 let img UIImageView.init() img.image UIImage…

Cesium态势标绘专题-集结地(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

Java的集合类:List、Set、Map

在 Java 中&#xff0c;集合类是一组有序或无序的数据元素的集合。Java 集合类可用于存储和操作各种数据类型的元素&#xff0c;如整数、字符串、对象等。集合类是动态的&#xff0c;可以在运行时根据需要调整其大小。 Java 集合类可以分为三类&#xff1a; List - 有序集合&…

如何判断某个视频是深度伪造的?

目录 一、前言 二、仔细检查面部动作 三、声音可以提供线索 四、观察视频中人物的身体姿势 五、小心无意义的词语 深造伪造危险吗&#xff1f; 一、前言 制作深度伪造视频就像在Word文档中编辑文本一样简单。换句话说&#xff0c;您可以拍下任何人的视频&#xff0c;让他…

Docker运行MySQL5.7

步骤如下&#xff1a; 1.获取镜像&#xff1a; docker pull mysql:5.7 2.创建挂载目录&#xff1a; mkdir /home/mydata/data mkdir /home/mydata/log mkdir /home/mydata/conf 3.先启动docker把配置文件拷贝出来&#xff1a; docker run -it --name temp mysql:5.7 /bi…

低代码和零代码有哪些区别?

低代码开发的概念 低代码开发是一种新兴的软件开发方法&#xff0c;其核心是通过使用图形用户界面和可视化建模工具&#xff0c;来减少编写代码的工作量和技能要求。低代码开发平台通常提供了丰富的预定义组件和模板&#xff0c;可以帮助开发人员快速构建应用程序。开发人员只…

性能测试之并发用户数的估计

在计算并发用户数之前&#xff0c;需要先了解2个概念。 并发用户&#xff1a;指的是现实系统中同时操作业务的用户&#xff0c;在性能测试工具中一般称为虚拟用户。并发用户这些用户的最大特征是和服务器产生了交互&#xff0c;这种交互既可以是单向的传输数据&#xff0c;也可…

cartographer学习之调参小结

cartographer使用过程中也涉及到了很多的参数调整&#xff0c;不同的参数对算法的影响是不同的。这里简单记录一下一些常调的参数以及一些比较重要的参数。 1、常调的参数 TRAJECTORY_BUILDER_2D.min_range 0.3 TRAJECTORY_BUILDER_2D.max_range 100 TRAJECTORY_BUILDER_2D…