事件如何在Qt中发挥作用?

时间:2012-09-22 16:40:02

标签: qt events

我对Qt事件的一般用法有一些疑问。我是Qt的新手,我将尝试制作一个自定义事件。我问的问题与本文有关:Qt 4.8: The Event System

  • 事件何时“发生”?
    在Qt的内置事件中,鼠标点击和按键被放入队列,然后功能在下一个执行帧。我特别想知道这个用于自定义事件,因为我不确定它是否总是在单击鼠标时出现。对于自定义事件,当您将事件发送到队列中然后等待下一帧的event()函数处理时,是它吗?

  • 要创建自定义事件,您是否必须创建一个继承自QEvent并使用registerEventType()函数注册事件的类?
    这是标准流程,还是可以一个活动只是一个班级?这个函数registerEventType()如何工作?

  • 自定义事件是否具有QEvent :: Type?
    这是使用registerEventType()函数时给出的1000到6563之间的数字吗?

  • 什么是活动的收件人?
    它似乎是在函数的参数中,如postEvent(),sendEvent()等。但是,我不确定这个目的是什么。

  • 触发事件时执行的实际代码在哪里?
    它是一个函数,还是在QObjects的event()函数中。


此外,Qt事件(内置或自定义)的任何工作示例都会有所帮助。

1 个答案:

答案 0 :(得分:0)

你应该在网上或QtSDK看Qt Examples,其中有很多。 IMO你没有努力搜索。

Ad.1。在使用QApplication :: postEvent()或QApplication :: sendEvent()触发它之后,它会发生。当然不是立即,因为它必须通过主循环等。但事件的顺序应该保留。

Ad.2。看看this,第二个anwser。

Ad.3。转到Ad.2。

Ad.4。此对象将在QObject :: customEvent()处理程序中接收此自定义事件。

Ad.5。转到Ad.4。