Qt学习篇(一):Qt信号槽机制

标签: Qt
19人阅读 评论(0) 收藏 举报
分类:
       Qt信号槽主要用来解决多窗口之间数据传值的问题,这里我们先来聊聊信号和槽函数;

       信号槽分为信号和槽函数:
  • 信号:是一个函数,这个函数不需要实现,只声明便可以,使用signals关键字限定;
                 函数返回值:void;
                 函数可重载,主要是便于针对不同传递界面单次传递数据数量不同;
                 单个信号可连接多个槽,用于将一方的数据传递到多个界面;
                 多个信号可连接一个槽,用于一方接收多个界面的数据以整合;
  • 槽函数:槽函数为类中的成员函数,自己定义与声明;
                 函数返回值:void;
                 函数可重载(这里未避免对C++不熟悉,解释下重载的感念,重载就是两个或多个函数函数名相同,入参个数各不相同);
                 参数需要与信号的参数一一对应,槽函数的参数个数只可小于或等于信号的参数个数,不可大于;

       下面正式进入信号槽的伪代码实现:
       我们以两个界面之间数据传递为例,同时定义一个Qt Widget项目,对应的存在两个成组存在的.cpp、.h文件(自己命名吧,这里我们以MainWindow,form为两个界面命名);
       我们要实现一个简单的demo,在form中的Edit上输入文本,点击按钮会在MainWindow界面上显示输入的文本。
       那么按照信号槽的原理,我们需要在form.h中声明信号,并写一个信号发送时间的一个函数(发送触发函数):
public slots:
    void pressBtn();

signals:
    void sendData(QString data);
这里slots表示槽,signals表示信号。
       因为信号只需声明,那么在form.cpp中只需要实现pressBtn槽函数:
void Form::pressBtn()
{
    emit sendData(ui->lineEdit->text());
}
这里emit表示将信号发送,由此知道pressBtn每执行一次将会发送一次信号;对于何时执行pressBtn函数,那边是使用我们之前表明的按钮了,使用connect将按钮与pressBtn函数绑定在一起,其实在我们点击按钮时便实现了一次信号的发送与接收,只不过这是Qt内部集成在按钮事件上了而已,不需要我们来做具体的实现,在我们点击按钮时发送了一个按钮点击的信号,而程序自身接收之后便会执行按钮绑定的执行函数。
       接下来便是实现信号的接收了,首先在MainWindow.h中声明:
private:
    Form* Fm;

public slots:
    void receivData(QString data);
receiveData便是接收槽。
       信号槽最主要的便是接下来的信号与槽之间的绑定,方式类似按钮与执行函数之间的绑定:
Fm = new Form();
connect(Fm,SIGNAL(sendData(QString)),this,SLOT(receivData(QString)));
而receiveData接受槽函数便是按照自己的功能来实现便可:
void MainWindow::receivData(QString data)
{
    ui->label->setText(data);
}
这样我们便实现了最初预期的效果。

附上我的完整的项目代码吧(这里我就用图片来展示吧)。



ok,信号槽机制到此结束,下次Get到新知识再来。
查看评论

Qt源码分析之信号和槽机制

Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个...
  • oowgsoo
  • oowgsoo
  • 2007-03-14 17:48:00
  • 19264

Qt信号与槽机制源码分析

在前一篇中,我翻译了一篇关于信号与槽机制详解的文章Qt信号与槽工作机制–译文。在这一篇文章中,我将根据自己的理解从Qt源码中分析该机制。建议在看本文章之前先去看看前面提到的译文或者直接看原文原文How...
  • encourage2011
  • encourage2011
  • 2015-05-28 17:37:34
  • 2741

Qt 信号和槽机制 优点 效率的详解

一、信号和槽机制 Qt提供了信号和槽机制用于完成界面操作的响应,是完成任意两个Qt对象之间的通信机制。 其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数。 二、、信号...
  • qq_21334991
  • qq_21334991
  • 2017-09-23 20:41:48
  • 1240

QT学习记录之理解信号槽机制

作者:朱金灿来源:http://blog.csdn.net/clever101QT的事件机制采用的信号槽机制。所谓信号槽机制,简而言之就是将信号和信号处理函数绑定在一起,比如一个按钮被单击是一个信号,...
  • clever101
  • clever101
  • 2014-04-16 13:29:24
  • 4294

QT的信号与槽机制介绍.

  • 2008年09月20日 00:21
  • 41KB
  • 下载

Qt中的信号槽机制详解

一、关于Qt我们都知道Qt是一个用于做gui界面开发的框架,Qt拥有强大的组件开发机制,Qt同时也是一个跨平台的C++界面开发框架,他和MFC不太一样,MFC主要是专注于windows上的界面开发。Q...
  • jiang_xinxing
  • jiang_xinxing
  • 2017-03-29 10:29:07
  • 769

Qt 信号槽机制与事件机制四 提升篇

标 题: 【翻译】Qt内部机制及逆向 作 者: zouzhin 时 间: 2011-04-30,15:51:44 链 接: http://bbs.pediy.com/showthread.php...
  • xzh_blue
  • xzh_blue
  • 2015-09-09 17:23:27
  • 1213

Qt信号与槽实现原理

有网友抱怨: 哪个大牛能帮帮我,讲解一下信号槽机制的底层实现? 不要那种源码的解析,只要清楚的讲讲是怎么发送信号,怎么去选择相应的槽,再做出反应。也就是类似于一个信号槽的相应流程。。。求解啊!!! 看...
  • fuyunzhishang1
  • fuyunzhishang1
  • 2015-09-10 16:37:17
  • 11091

Qt中的信号与槽机制解析

注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用。 所谓信号槽,简单来说,就像是插销...
  • bzhxuexi
  • bzhxuexi
  • 2015-05-04 17:44:02
  • 4073

Qt信号与槽机制详解

信号和槽机制是Qt的核心机制之一,要掌握Qt编程就需要对信号和槽有所了解。信号和槽是一种高级接口,它们被应用于对象之间的通信,它们是Qt的核心特性,也是Qt不同于其它同类工具包的重要地方之一。 ...
  • A09211008
  • A09211008
  • 2014-06-03 10:08:11
  • 1989
    个人资料
    等级:
    访问量: 3383
    积分: 64
    排名: 161万+
    文章存档