Qt---day2-信号与槽

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();
复制代码
    }
复制代码
复制代码
}
复制代码
相关推荐
wjs20247 分钟前
CentOS Docker 安装
开发语言
阿熊不会编程35 分钟前
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
linux·开发语言·网络·c++·设计模式
小牛itbull36 分钟前
Mono Repository方案与ReactPress的PNPM实践
开发语言·前端·javascript·reactpress
jokerest1231 小时前
pwn——test_your_nc1——测试
开发语言·php
碧海蓝天20221 小时前
接上一主题,C++14中如何设计类似于std::any,使集合在C++中与Python一样支持任意数据?
开发语言·c++·python
周杰伦fans1 小时前
Java与C#
java·开发语言·c#
SAP学习成长之路2 小时前
SAP 零售方案 CAR 系统的介绍与研究
大数据·开发语言·sap·abap·零售·car·bapi
机器视觉知识推荐、就业指导2 小时前
Qt/C++基于重力模拟的像素点水平堆叠效果
c++·qt
A_Tai23333332 小时前
MyBatis高级扩展
java·开发语言·mybatis
夏子曦2 小时前
java虚拟机——频繁发生Full GC的原因有哪些?如何避免发生Full GC
java·开发语言