-
一、GUI消息驱动事件模型:
-
二、信号与槽:
——信号(signal)
由操作系统产生的消息
——槽(slot)
程序中的消息处理函数
——连接(connect)
将系统消息绑定到消息处理函数
-
三、Qt中的消息处理机制:
信号到槽的连接必须发生在两个Qt类对象之间!
-
四、Qt的核心——QObject::connect函数
bool connect(const QObject* sender, //发送对象
const char* signal, //消息名
const QObject* receiver, //接收对象
const char* method, //接受对象的成员函数
Qt::ConectionType type = Qt::AutoConnection);
注:1、在Qt中,消息用字符串进行描述;2、connect函数在消息名和处理函数之间建立映射
-
五、Qt中关于信号与槽的关键字
——Q_QBJECT
所有自定义槽的类必须在类声明的开始处加上Q_QBJECT
——slots
用于在类中声明消息处理函数
——SIGNAL
用于指定消息名
——SLOT
用于指定消息处理函数名
QObject::connect(&b, SIGNAL(clicked()), &a, SLOT(quit()));//&b:发送者,这里是按钮对象;&a:应用程序的对象接收信号 |
注,关于自定义槽的要求:
- 只有QObject的子类才能自定义槽
- 定义槽的类必须在声明的最开始处使用Q_QBJECT
- 类中声明槽时需要使用slots关键字
- 槽与所处理的信号在函数签名上必须一致,例如上面的clicked()和quit()
- SIGNAL和SLOT所指定的名称中:
——可以包含参数类型
——不能包含具体的参数名