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();
复制代码
    }
复制代码
复制代码
}
复制代码
相关推荐
用户805533698033 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner3 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz8 天前
QML Hello World 入门示例
qt
xcyxiner11 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner11 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner12 天前
DicomViewer (添加模型类)3
qt
xcyxiner12 天前
DicomViewer (目录调整) 2
qt
xcyxiner13 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术14 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript