Qt学习五-信号与槽机制补充

目录

1.打印输出

2.信号与槽

2.1.信号

2.2.槽函数

2.3.连接

2.4.发送信号

2.5.取消连接


1.打印输出

1.1.cout输出

#include<iostream>
std::cout<< A<< B <<std::endl;

1.2.qDebug输出

#include<QDebug> 
QString s = "yaya";
qDebug() << "My name is " << s << ", nice to meet you!" << endl;   //方式1
qDebug("My name is " + s.toLatin1() + ", nice to meet you!\n");    //方式2

2.信号与槽

        Qt采用信号和槽实现对象部件之间的通信。

2.1.信号

        当信号被发射时,Qt将回调与其相连接的槽函数,信号将有元对象处理moc自动翻译成C++代码。信号的声明不在cpp文件中,而是在头文件中。

Q_OBJECT
......
signals:
    void mySignal();
    void mySignal (int x);
    void mySignalParam(int x, int y);

2.2.槽函数

  • 槽函数是普通的C++成员函数,可以被正常调用
  • 槽函数可以有返回值,也可以没有
  • 槽函数的访问权限三种:public slots、priate slots和protected slots
  • 槽函数的存取权限决定了谁能够与其相关联
Q_OBJECT
......
public slots:
    void mySlot();
    void mySlot(int x);
    void mySignalParam (int x, int y);

2.3.连接

QMetaObject::Connection QObject::connect(
        const QObject *sender, PointerToMemberFunction signal, 
        const QObject *receiver, PointerToMemberFunction method, 
        Qt::ConnectionType type = Qt::AutoConnection);
参数:
  - sender:   发出信号的对象
  - signal:   属于sender对象, 信号是一个函数, 这个参数的类型是函数
              指针, 信号函数地址
  - receiver: 信号接收者
  - method:   属于receiver对象, 当检测到sender发出了signal信号, 
              receiver对象调用method方法,信号发出之后的处理动作
 
//  参数 signal 和 method 都是函数地址, 因此简化之后的 connect() 如下:
connect(const QObject *sender, &QObject::signal, 
        const QObject *receiver, &QObject::method);

2.4.发送信号

signal一般是在事件处理时Qt自己发出的,如果需要程序自己触发信号,则使用emit

2.5.取消连接

        取消连接不常用,Qt会在一个对象被删除后自动取消这个对象所包含的所有连接。

bool QObject: disconnect(const QObject *k sender, const char *k signal, const QObject receiver, const char method);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值