1. 新建项目SignalAndSlot项目

编写代码如下:

mysignal.h

#ifndef MYSIGNAL_H
#define MYSIGNAL_H
 
#include <QObject>
 
class MySignal : public QObject
{
    Q_OBJECT
public:
    explicit MySignal(QObject *parent);
 
signals:
    void sig();
 
public slots:
 
};
 
#endif

mysignal.cpp

#include
"mysignal.h"

MySignal::MySignal(QObject
*parent)
:

QObject(parent)

{

}

myslot.h

        #ifndef MYSLOT_H
#define MYSLOT_H
 
#include <QObject>
 
class MySlot : public QObject
{
    Q_OBJECT
public:
    explicit MySlot(QObject *parent);
 
signals:
 
public slots:
    void slot();
 
};
 
#endif // MYSLOT_H

myslot.cpp

#include
"myslot.h"

#include
<QDebug>

MySlot::MySlot(QObject
*parent)
:

QObject(parent)

{

}

void
MySlot::slot()

{

qDebug()
<<
"MySlot::slot
is
called";

}

Main.cpp

#include <QCoreApplication>
#include "mysignal.h"
#include "myslot.h"
 
/*
 *1)信号的定义必须在signals:保留字下,并且不需要实现
 *2)槽的定义必须在slots:保留字下,需要实现
 *3)信号和槽通过QObject::connect函数连接
 *4)当信号被触发是,槽函数被调用
 *
 *需要注意的是:
 *1) 信号的定义必须在signals:保留字下,并且不需要实现
 *2)槽的定义必须在slots:保留字下,需要实现
 *3)信号和槽通过QObject::connect函数连接
 *4)当信号被触发时,槽函数被调用
 *
 *需要注意的是:
 *1)信号和槽,是QT的拓展,所以实现信号和槽的类,必须是QObject的子类
 *2)实现信号和槽的类,必须以宏Q_OBJECT开始
 *3)连接信号和槽,要用到SIGNAL和SLOT宏,转换函数为字符串
 *4)一个信号可以和多个槽连接,槽函数调用的顺序是不确定的
 *5)多个信号可以同时连接一个槽
 *6)信号可以连接信号,形成信号传导
 *7)信号和槽的参数应该一样多,而且类型必须相同
 *8)信号和槽都可以重载
 *9)信号和槽都可以有默认参数
 *10)槽函数可以像普通函数一样被调用
 *11)在槽函数中,调用sender可以获得信号调用者
 *
 * 总结下:
 * 一个类:QObject
 * 三个宏:Q_OBJECT SIGNAL SLOT
 * 三个保留字:signals, slots, emit
 */
int main(int argc,char** argv)
{
    QCoreApplication app(argc,argv);
 
    MySignal sig;
    MySlot slot;
 
    //通过QObject的connect实现信号和槽函数之间的关联,
    //当调用了信号之后槽函数也相应的被调用了
    QObject::connect(&sig, SIGNAL(sig()), &slot, SLOT(slot()));
    //通过下面一行实现发射一个信号
    emit sig.sig();
    return app.exec();
}

运行结果:

6.QT信号和槽的更多相关文章

  1. QT 信号与槽connect

    QT 信号与槽connect QT 信号与槽connect connect函数调用几个限制 connect函数代码 QT中信号与槽的连接使用的connect函数是一个静态函数,在类QObject中定义 ...

  2. Qt 信号与槽

    Qt信号与槽的理解 信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解.信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重 ...

  3. QT信号和槽

    QT信号和槽 ============ 信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性.要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler) ...

  4. Qt信号与槽自动关联机制

    参考链接1:http://blog.csdn.net/skyhawk452/article/details/6121407 参考链接2:http://blog.csdn.net/memory_exce ...

  5. Qt信号与槽应用实例一

    ..... connect(m_pGlobelWidget,signal(globeControlClick(object,object)),this,slot(globeControlClick(o ...

  6. Qt 信号和槽函数

    信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性.当某个信号被发射,就需要调用与之相绑定的槽函数.这与Windows下的消息机制类似,消息机制是基于回调函数.一个回调即是一个函数的 ...

  7. QT 信号与槽连接

    转帖 http://www.cnblogs.com/cnhome/archive/2009/10/01/1577277.html 信号(SIGNAL)和槽(SLOT)是Qt编程的一个重要部分.这个机制 ...

  8. Qt信号和槽的个人总结

    1.connect connect(sender,SIGNAL(signal()),receiver,SLOT(slot())); 这里用到了两个宏:SIGNAL() 和SLOT():通过connec ...

  9. QT 信号与槽 QT简单加法器的实现

    信号与槽 背景: 面向过程 模块之间低耦合设计(高内聚). 函数调用: 直接调用 回调调用(低耦合) 面向对象 模块之间低耦合设计(高内聚) 对象调用 直接调用 接口调用 QT: 信号与槽解决问题: ...

  10. 关于Qt信号与槽机制的传递方向性研究(结论其实是错误的,但是可以看看分析过程)

    最近由于项目的需求,一直在研究Qt.信号与槽机制是Qt的一大特色,该机制允许两者间传递参数,依次来实现对象间的通信.这个参数会分别存在于信号的参数列表和槽函数的参数列表中.需要注意的是,若将槽函数绑定 ...

随机推荐

  1. [USACO07NOV]牛继电器Cow Relays

    题目描述 给出一张无向连通图,求S到E经过k条边的最短路. 输入输出样例 输入样例#1: 2 6 6 4 11 4 6 4 4 8 8 4 9 6 6 8 2 6 9 3 8 9 输出样例#1: 10 ...

  2. 51nod 1770 数数字

    1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题  收藏  关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...

  3. [SHOI2001]化工厂装箱员

    题目描述 118号工厂是世界唯一秘密提炼锎的化工厂,由于提炼锎的难度非常高,技术不是十分完善,所以工厂生产的锎成品可能会有3种不同的纯度,A:100%,B:1%,C:0.01%,为了出售方便,必须 ...

  4. bzoj1853[Scoi2010]幸运数字 容斥

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 3027  Solved: 1128[Submit][Status ...

  5. Spring利用反射调用接口

    首先在项目中使用java反射调用 //根据实例及参数名获得方法A Method method = event.getObj().getClass() .getMethod(event.getMetho ...

  6. JQuery when() done() then()

    jQuery.when(deferreds) 参数deferreds,一个或多个延时对象或JS对象,我们初略的认为它就是一个或多个异步请求. 例如:$.when($.ajax("page1. ...

  7. redux 最简例子

    方便初学redux的同学学习,这里是最简单的redux例子 1 import React, {Component, PropTypes} from 'react' 2 import ReactDOM ...

  8. 关于一些基础的Java问题的解答(五)

    21. 实现多线程的两种方法:Thread与Runable 在Java中实现多线程编程有以下几个方法: 1.继承Thread类,重写run方法 public class Test { public s ...

  9. Socket网络编程详解

    一,socket的起源 socket一词的起源 在组网领域的首次使用是在1970年2月12日发布的文献IETF RFC33中发现的, 撰写者为Stephen Carr.Steve Crocker和Vi ...

  10. day08 JSP

    day08 JSP 1. jsp 入门和 jsp 运行原理 2. jsp 语法 2.1 jsp 模板元素:jsp 页面中的 html 内容.它定义了网络基本骨架,即定义了页面结构和外观. 2.2 js ...