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();
复制代码
    }
复制代码
复制代码
}
复制代码
相关推荐
NiNg_1_23427 分钟前
JS模块化工具requirejs详解
开发语言·javascript·ecmascript
T0uken4 小时前
【QT Quick】C++交互:与QML类型转换
c++·qt·交互
程序猿阿伟4 小时前
《C++音频降噪秘籍:让声音纯净如初》
开发语言·c++·网络协议
Tech_gis5 小时前
C++ 观察者模式
开发语言·c++·观察者模式
卑微求AC5 小时前
继电器原理及应用
c语言·开发语言·51单片机·嵌入式
曳渔5 小时前
Java-数据结构-反射、枚举 |ू・ω・` )
java·开发语言·数据结构·算法
laocooon5238578865 小时前
java 模拟多人聊天室,服务器与客户机
java·开发语言
风槐啊5 小时前
六、Java 基础语法(下)
android·java·开发语言
网安老伯5 小时前
【2024版】最新kali linux入门及常用简单工具介绍(非常详细)零基础入门到精通,收藏这一篇就够了_kalilinux
linux·运维·服务器·开发语言·web安全·网络安全·xss
laocooon5238578865 小时前
java类的混搭,
java·开发语言