zoukankan      html  css  js  c++  java
  • 19.QT-事件发送函数sendEvent()、postEvent()

    -阻塞型事件发送

    • 需要重写接收对象的event()事件处理函数
    • 当事件发送后,将会立即进入event()事件处理函数进行事件处理
    • 通过sendEvent()静态函数实现阻塞发送:
    • sendEvent()函数是阻塞式的,所以支持栈空间/堆空间事件对象的发送(局部对象和new分配的对象)
    • new分配的事件对象被处理后,会由Qt内部自动摧毁

    -非阻塞型事件发送

    • 需要重写接收对象的event()事件处理函数
    • 当事件发送后立即返回,事件将会发送到事件队列中等待处理
    • 通过postEvent()静态函数实现非阻塞发送:
    • postEvent()函数是非阻塞式的,所以只能支持栈堆空间事件对象的发送(new分配的对象)
    • new分配的事件对象被处理后,会由Qt内部自动摧毁

    Wiget.h

    效果

     

    自定义事件对象

    • 自定义的事件类必须继承自QEvent,并且无需指定父类
    • 自定义的事件类必须拥有全局唯一Type值,使用QEvent::User+value即可
    • 自定义事件类示例:
    • 由于Qt不认识自定义事件,所以程序里需要提供处理自定义事件对象的方法

    1.通过事件过滤器处理

    • 通过installEventFilter()安装到目标对象
    • eventFilter()函数里处理事件

    2.重写目标对象的event()函数

    • event ()函数里处理事件

    QStringEvent文件:

    效果:

     


    文章来源:https://www.cnblogs.com/lifexy/p/9042862.html

  • 相关阅读:
    04.
    24
    39
    46
    72.
    21.
    logout: not found”
    Username is not in the sudoers file. This incident will be reported
    激活函数
    排序算法
  • 原文地址:https://www.cnblogs.com/xiongjim/p/9673936.html
Copyright © 2011-2022 走看看