Qt中封装了具体操作系统的消息机制、遵循经典的GUI消息驱动事件模型(程序中将具体消息映射到指定的函数,当消息触发时,指定函数被调用)
信号与槽(Qt中的核心机制)概念:
信号:由操作系统产生的消息
槽:程序中的消息处理函数
连接:将系统消息绑定到消息处理函数
Qt消息处理机制模型:
信号到槽的连接必须发生在两个Qt类对象之间,用于对象之间的通信
connect函数
bool QObject::connect ( const QObject* sender, const char * signal, const QObject * receiver,const char * method,Qt::ConnectionType type =Qt::AutoConnection ) [static]
sender发送对象 signal消息名 receiver接收对象 method接收对象的成员函数(消息处理函数)
由函数可知:
在Qt中消息用字符串进行描述
connect函数在消息名和处理函数之间建立映射
注:在指定消息名与消息处理函数名时必须使用宏SIGNAL 与宏SLOT
自定义槽的规则:
1、只有QObject的子类才能自定义槽
2、定义槽的类必须在类声明的私有声明区域声明宏Q_OBJECT
3、在类中声明槽函数时必须使用关键字slots
4、槽与所处理的信号在函数签名上必须一致
5、关键字SIGNAL与SLOT中的名称可以包含参数类型,但不能包含具体参数名
编译时如果报错:Object::connect No such slot….
1、检查类是否继承于QObject
2、检查类的声明的私有声明处是否声明了宏Q_OBJECT
3、检查类中是否使用slots关键字进行槽函数的声明
4、检查槽函数的名称是否拼写错误
5、重新执行qmake
声明:
此文根据 狄泰学院唐老师的《QT实验分析教程》创作