QT6(14)3.3.4 信号与槽:conenct 的函数源码,解除信号与槽函数的绑定 disconnect()及其源码,sender()返回信号发射者,信号的发射举例 emit,

(39)++关于信号与槽 conenct 的源码定义简写版

class Q_CORE_EXPORT QObject // 这就是大名鼎鼎的 QObject 类,定义于<qobject.h>
{
    Q_OBJECT
	
	// 本基础类 QObject 也用该宏定义了一个 objectName 属性
	Q_PROPERTY(QString objectName   
				READ objectName WRITE setObjectName 
				NOTIFY objectNameChanged
                BINDABLE bindableObjectName ) //这是函数名
                //QBindable<QString> QObject :: bindableObjectName();
                
    static QMetaObject::Connection connect(   //类的静态成员函数
    		const QObject * sender  , const char * signal,
            const QObject * receiver, const char * member, 
            Qt::ConnectionType = Qt::AutoConnection ); 

    inline QMetaObject::Connection connect( //此时要求槽函数用 SLOT()宏形式
    	const QObject * sender, const char * signal, const char * member, 
    		Qt::ConnectionType type = Qt::AutoConnection) const; //常量修饰

	//帮助文档显示 QMetaMethod Class,这是个很大的类
	//该类应该实现了有参构造函数,根据函数指针构造一个 QMetaMethod 对象。没源码。
    static QMetaObject::Connection connect(   //形参是类方法的左值引用
    		const QObject * sender  , const QMetaMethod & signal,
            const QObject * receiver, const QMetaMethod & method,
            Qt::ConnectionType type = Qt::AutoConnection);
}

(40)解除信号与槽函数的绑定 disconnect()

在这里插入图片描述

++ 源码支持(阅读源码很累,也很恐惧,很担心太难,也担心时间。但这才是最快的方法了,理解中记忆):

class Q_CORE_EXPORT QObject // 这就是大名鼎鼎的 QObject 类,定义于<qobject.h>
{
    Q_OBJECT
	
    static bool disconnect( //静态成员函数,宏形式
    		const QObject * sender  , const char * signal,
            const QObject * receiver, const char * member);
            
    static bool disconnect( //静态成员函数,函数指针形式
    		const QObject * sender  , const QMetaMethod & signal,
            const QObject * receiver, const QMetaMethod & member);

    static bool disconnect(const QMetaObject::Connection &); //逆天    
        
    inline bool disconnect( //成员函数版本,可见本 this 相当于 sender
    		const char    * signal   = nullptr, //成员函数版本也构成重载
            const QObject * receiver = nullptr, 
            const char    * member   = nullptr) const // 适用于 const子对象
    { return disconnect(this, signal, receiver, member); }
    
    inline bool disconnect( //成员函数版本,本 this 相当于 sender
    		const QObject * receiver,                 // 适用于 const子对象
    		const char    * member   = nullptr) const
    { return disconnect(this, nullptr, receiver, member); }
    

}

(41)QObject 类里的又一个基础函数

在这里插入图片描述

(42)信号的发射举例,emit

在这里插入图片描述

(43)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值