您的位置:首页 > 编程语言 > Qt开发

<Qt>事件的幕后运作原理

2017-04-18 13:56 211 查看
最近在研究事件的幕后逻辑,以下是事件的完全逻辑过程:

1、用户出发事件;

2、生成事件对象,传递到 event() 中;

3、event() 判断事件类型 type(),并将事件对象投递到相关 type() 中;

4、相关类型接受事件,解析事件具体细节;

5、根据事件具体细节进行具体操作。

举个例子:

1、用户点击鼠标左键;

2、生成包含这个事件发生细节的对象,传递到event();

3、event() 判断是鼠标事件,将此事件投递到鼠标事件处理站;

4、鼠标事件处理站接受鼠标事件,解析得知是”点击鼠标左键“事件;

5、调用”点击鼠标左键“事件的处理方法。

event() 代码原理:(判断事件类型,再按类型调用执行)

bool QObject::event(QEvent *e)
{
switch (e->type()) {
case QEvent::Timer:
timerEvent((QTimerEvent*)e);
break;

case QEvent::ChildAdded:
case QEvent::ChildPolished:
case QEvent::ChildRemoved:
childEvent((QChildEvent*)e);
break;
// ...
default:
if (e->type() >= QEvent::User) {
customEvent(e);
break;
}
return false;
}
return true;
}

*此代码引用自: DevBean.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt