Qt---day2-信号与槽

embedded/2024/9/22 10:56:34/

1、思维导图

2、 拖拽式

源文件

#include "mywidget.h"
#include "ui_mywidget.h"
 
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MyWidget)
{
    ui->setupUi(this);
 
//按钮2
    this->btn2=new QPushButton("按钮2",this);
    btn2->resize(ui->pushButton->size());
    btn2->move(ui->pushButton->x(),ui->pushButton->y()+80);
    connect(this->btn2,&QPushButton::clicked,this,&MyWidget::bnt2_clicked);
//按钮3
    this->btn3 =new QPushButton("按钮3",this);
    btn3->resize(ui->pushButton->size());
    btn3->move(this->btn2->x(),this->btn2->y()+80);
    connect(this->btn3,&QPushButton::clicked,[&](){
        qDebug() << "lalalla";
    });
 
 
 
 
}
 
MyWidget::~MyWidget()
{
    delete ui;
}
 
 
//通过槽创建的按钮生成的连接
void MyWidget::on_pushButton_clicked()
{
    qDebug() << "你点击了按钮1";
}
 
//按钮2的连接函数
void MyWidget::bnt2_clicked()
{
    static int num=0;
    if(num%3==0)
    {
        this->setStyleSheet("background-color:red");
 
    }else if(num%3==1)
    {
        this->btn2->setStyleSheet("background-color:green");
    }
    else
    {
        this->btn2->setStyleSheet("background-color:blue");
    }
    num++;
}

 头文件

#ifndef MYWIDGET_H
#define MYWIDGET_H
 
#include <QWidget>
#include <QDebug>
#include <QPushButton>
#include <QtTextToSpeech/QTextToSpeech>
QT_BEGIN_NAMESPACE
namespace Ui { class MyWidget; }
QT_END_NAMESPACE
 
class MyWidget : public QWidget
{
    Q_OBJECT
 
//signals:
//    void mySignal(void);
 
//public slots:
//    void mySlots(void);
    void bnt2_clicked();
 
public:
    MyWidget(QWidget *parent = nullptr);
    ~MyWidget();
 
private slots:
    void on_pushButton_clicked();
 
private:
    Ui::MyWidget *ui;
 
    QPushButton *btn2;
    QPushButton *btn3;
    QTextToSpeech *speecher;
};
#endif // MYWIDGET_H
3、代码式

头文件

#ifndef MYWIDGET_H
#define MYWIDGET_H
 
 
#include <QWidget>
#include<QIcon> //图标类
#include<QLabel> //标签类
#include<QMovie> //动图类
#include<QLineEdit> //行编辑器类
#include<QPushButton> //按钮类
#include <QDebug>
 
 
class MyWidget : public QWidget
{
    Q_OBJECT;
    QPushButton *btn;
     QLineEdit *edit1;
     QLineEdit *edit2;
 
 
public:
    MyWidget(QWidget *parent = nullptr);
    ~MyWidget();
    void  signal();
};
#endif // MYWIDGET_H
 
 

 源文件

#include "mywidget.h"
 
 
MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    //==============窗口相关设置=======
    this->resize(540,415);
    this->setFixedSize(540,415);
    //窗口标题
    this->setWindowTitle("盗版QQ");
    //窗口图标
    this->setWindowIcon(QIcon(":/pictrue/qq.png"));
    //背景颜色
    this->setStyleSheet("background-color:white");
    //去掉头部
    this->setWindowFlag(Qt::FramelessWindowHint);
 
 
    //============标签相关设置=======
    QLabel *lab1 = new QLabel(this);
    //设置大小
    lab1->resize(540, 160);
    lab1->setStyleSheet("background-color:pink");
    //动图类 接收动图
    QMovie *mv = new QMovie(":/pictrue/zz.gif");
    //将动图放入标签中
    lab1->setMovie(mv);
    //让动图动起来
    mv->start();
    //自动适应
    lab1->setScaledContents(true);
 
 
    QLabel *lab2 = new QLabel(this);
    lab2->resize(30,30);
    lab2->move(120,210);
    lab2->setPixmap(QPixmap(":/pictrue/wodepeizhenshi.png"));
    lab2->setScaledContents(true);
 
 
    QLabel *lab3 = new QLabel(this);
    lab3->resize(30,30);
    lab3->move(120, 260);
    lab3->setPixmap(QPixmap(":/pictrue/passwd.jpg"));
    lab3->setScaledContents(true);
 
 
    //============行编辑器相关设置=======
    QLineEdit *edit1 = new QLineEdit(this);
    edit1->resize(275,30);
    edit1->move(155,210);
    edit1->setPlaceholderText("QQ号/手机号/邮箱");
 
 
    QLineEdit *edit2 = new QLineEdit(this);
    edit2->resize(275,30);
    edit2->move(155,260);
    edit2->setPlaceholderText("密码");
    edit2->setEchoMode(QLineEdit::Password);
 
 
 
 
    //============按钮相关设置=======
    QPushButton *btn = new QPushButton("登录",this);
    btn->resize(300,45);
    btn->move(120,345);
    //样式函数setStyleSheet()
    btn->setStyleSheet("background-color:rgb(8,189,253);border-radius:5px;color:white");
 
   // connect(btn,&QPushButton::clicked,edit1,&QLineEdit::textChanged);
  //  connect(btn,&QPushButton::clicked,edit2,&QLineEdit::textChanged);
    connect(edit1,&QLineEdit::textChanged,this,&MyWidget::signal);
     connect(edit2,&QLineEdit::textChanged,this,&MyWidget::signal);
}
 
 
MyWidget::~MyWidget()
{
}
 
 
void MyWidget::signal()
{
    if(edit1->text().size()>=5 && edit2->text().size()>=5){
              btn->setStyleSheet("background-color:green");
            }
    if(edit1->text()=="paomao"&&edit2->text()=="555555")
    {
        qDebug() << "登录成功";
        this->close();
    }
    else
    {
        qDebug() << "登录失败,密码账号有错误,请重新输入";
        edit1->clear();
        edit2->clear();
    }
 
}
 

 


http://www.ppmy.cn/embedded/37978.html

相关文章

消息队列使用常见问题

一、消息丢失的时机&#xff1f; 生产端消息丢失 问题&#xff1a;因为网络异常导致消息发送失败&#xff0c;此时可能会产生消息丢失的情况&#xff0c;重试后可能产生消息重复生产的情况。 解决&#xff1a;超时重试&#xff0c;并在消费端保证幂等性。 消息队列中消息丢失 …

3dmax-vray6渲染器参数设置

适用于3dmax2018-2023版本 一、【公用】 小图输出大小:1500*1125&#xff0c;勾选大气、效果&#xff1b; 大图输出大小:3000*2250&#xff0c;勾选大气、效果、置换&#xff1b; 二、【vray】 小图抗锯齿类型:渐进式&#xff1b;最小细分:1&#xff0c;最大细分:100&#…

农村公交与异构无人机协同配送优化

针对农村公交与异构无人机协同配送的优化问题,可以从以下几个方面进行探讨: 1. 融合公交与无人机配送 公交物流体系:利用农村公交网络,建立以公交车辆为基础的物流配送体系。公交车辆可以沿途收集或投递货物,提高物流配送效率。无人机辅助配送:在公交物流体系的基础上,…

JAVA语言程序设计1(第七章)

一、编程思想 1. 面向过程&#xff1a; (1) 面向过程&#xff1a;将问题分为第一步、第二步、第三步... 直到问题解决 (2) 问题&#xff1a;解决小业务相对比较简单&#xff0c;但是面对复杂业务时&#xff0c;相对不好处理 2. 面向对象&#xff1a; (1) 面向对象&#…

.Wormhole勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言&#xff1a; 随着信息技术的飞速发展&#xff0c;网络安全问题愈发凸显其重要性。近年来&#xff0c;勒索病毒成为了网络安全领域的一大难题&#xff0c;而其中的.Wormhole勒索病毒更是以其独特的传播方式和强大的破坏力引起了广泛关注。本文将详细介绍.Wormhole勒索病毒…

linux系统 虚拟机的安装详细步骤

window&#xff1a; (1) 个人&#xff1a;win7 win10 win11 winxp (2)服务器&#xff1a;windows server2003 2008 2013 linux&#xff1a; (1)centos7 5 6 8 (2)redhat (3)ubuntu (4)kali 什么是linux: 主要是基于命令来完成各种操作&#xff0c;类似于DO…

C++中的构造函数以及默认拷贝构造函数

构造函数 构造函数是在创建类的新对象时自动调用的函数&#xff0c;用于初始化对象的状态。构造函数的名称与类名相同&#xff0c;没有返回类型。 基本构造函数类型&#xff1a; 默认构造函数&#xff1a; 定义&#xff1a;没有参数的构造函数&#xff0c;或者是所有参数都有…

【VueUse库各模块函数使用方法系列---Browser模块下篇】

vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法: vueUse库Browser模块各函数简介及使用方法 vueUseBrowser函数1. `useScript…