qt消息处理机制.pptVIP

  • 36
  • 0
  • 约4.25千字
  • 约 15页
  • 2018-03-27 发布于江西
  • 举报
qt消息处理机制.ppt

页码 QT事件处理机制 什么是事件? 事件:由窗口系统或者Qt自身产生的,用以响应所发生的各类事情。 事件产生类型: 1.键盘或者鼠标事件:用户按下或者松开键盘或者鼠标上的按键时,就可以产生一个键盘或者鼠标事件 2.绘制事件:某个窗口第一次显示的时候,就会产生一个绘制事件,用来告诉窗口需要重新绘制它本身,从而使得该窗口可见 3. QT事件:Qt自己也会产生很多事件,比如QObject::startTimer()会触发QTimerEvent QT事件处理机制 谁来产生事件 ? 输入设备 :比如键盘,鼠标产生的事件keyPressEvent ,keyReleaseEvent,mousePressEvent事件(他们被封装成QMouseEvent和QKeyEvent)。 这些事件来自于底层的操作系统,他们可以异步的形式通知Qt事件处理系统。 QT自己: QT自己会产生很多事件,比如QObject::startTimer()会触发QTimerEvent 用户自定义事件:用户的程序还可以自己定制事件 QT事件处理机制 谁来接受和处理事件 ? ————QObject QObject三大职责(内存管理、内省(intropection)与事件处理制) 任何一个想要接受并处理事件的对象均须继承自QObject ,可以重写 QObject::event() 来处理事件,也可以由父类处理。 QT事件处理机制 谁来负责分发事件 ? 对于non-GUI的Qt程序,是由QCoreApplication负责将QEvent分发给 QObject的子类-Receiver. 对于Qt GUI程序,由QApplication来负责 接下来,将通过对代码的解析来看看QT是利用event loop从事件队列中获取用户输入事件,又是如何将事件转义成QEvents,并分发给相应的QObject处理 QT事件处理机制 QApplication? - QCoreApplication (得到当前Thread数据?? ,委任 QEventLoop?处理事件队列循环 )-QEventLoop(只要没有遇见exit, processEvents循环派发事件(将事件派发给与平台相关的 QAbstractEventDispatcher子类 ) )? -QAbstractEventDispatcher (打包成message后,通过标准Windows API ,把消息传递给了Windows OS,Windows OS得到通知后回调QtWndProc ) -QtWndProc (事件又是怎么一步步通过QApplication分发给最终事件的接受和处理者QWidget::event, (QWidget继承Object,重写其虚函数event) ) QT事件处理机制 #include?QApplication??? ? #include?“QWidget.h??? ? //Section?1??? ? int?main(int?argc,?char?*argv[])??? ? {??? ? ????QApplication?app(argc,?argv);??? ? ????QWidget?window;? ? ????window.show();??? ? ????return?app.exec();?//?进入Qpplication事件循环,见section?2??? ? }??? ? QT事件处理机制 //?Section?2:???? ? int?QApplication::exec()??? ? {??? ? ???//skip?codes??? ? ???//简单的交给QCoreApplication来处理事件循环=〉section?3??? ? ???return?QCoreApplication::exec();??? ? }?? QT事件处理机制 //?Section?3??? ? int?QCoreApplication::exec()??? ? {??? ? ????//得到当前Thread数据??? ? ????QThreadData?*threadData?=?self-d_func()-threadData;??? ? ????if?(threadData?!=?QThreadData::current())?{??? ? ????????qWarning(%s::exec:?Must?be?called?from?the?main?thread,?self-metaObject()-className());??? ? ????????return?-

文档评论(0)

1亿VIP精品文档

相关文档