Qt---day2-信号与槽

2024-05-08 01:44
文章标签 qt day2 信号

本文主要是介绍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();
    }
 
}
 

 

这篇关于Qt---day2-信号与槽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/968958

相关文章

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

无线路由器哪个品牌好用信号强? 口碑最好的三个路由器大比拼

《无线路由器哪个品牌好用信号强?口碑最好的三个路由器大比拼》不同品牌在信号覆盖、稳定性和易用性等方面各有特色,如何在众多选择中找到最适合自己的那款无线路由器呢?今天推荐三款路由器让你的网速起飞... 今天我们来聊聊那些让网速飞起来的路由器。在这个信息爆炸的时代,一个好路由器简直就是家庭网编程络的心脏。无论你

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能