Qt 中的自定义事件
Custom events in Qt
我正在Qt Creator中尝试自定义事件。我目前正在另一个站点上检查此示例代码:
bool MyClass::event(QEvent* e)
{
if (e && e->type() == MyCustomEventType) {
MyCustomEvent* ce = dynamic_cast<MyCustomEventType*>(e);
return handleCustomEvent(ce);
}
// very important: still handle all the other Qt events!
return QObject::event(e);
}
条件语句检查传递的事件是否是自定义事件,然后执行事件发生时要发生的代码。我不明白的是return handleCustomEvent(e)
(这个函数应该做什么,应该在哪里声明?)以及return QObject::event(e)
做什么。从我在Qt文档中读到的内容来看,这个函数唯一要做的就是返回事件的函数(这个handleCustomEvent吗?)是否被"识别和处理"。这应该处理循环中的所有其他事件吗?
handleCustomEvent()
是您需要在类MyClass
中实现的方法,该方法将处理自定义事件MyCustomEventType
。
如果不是自定义事件,则将调用最后一行return QObject::event(e);
来处理其他事件类型。
因此,代码段中的方法bool MyClass::event(QEvent* e)
,就像路由代码一样,用于决定将事件发送到何处进行处理,并且实际上并不处理事件。
一旦确定'e'
属于类型 MyCustomEventType
- 它将调用handleCustomEvent()
,其中包含您的代码来处理此事件类型。
如果不是 - 最后一行调用 QObject::event()
来处理它。这将处理所有其他剩余类型的事件。
所以,不,除非你愿意,否则你不必担心处理其他事件。
因此,您需要在MyClass
中声明handleCustomEvent()
并实现它。
像这样:
class MyClass {
...
...
public:
bool handleCustomEvent(MyCustomEventType* e);
...
...
};
在实现中,您可能具有所需的逻辑 - 实际处理自定义事件类型MyCustomEventType
。
相关文章:
- 如何解决:自定义QGraphics项目接收鼠标新闻事件坐标延迟/滞后?
- 在UE4中,玩家进行光线投射、击中物体并触发自定义事件C++
- 如何在Maya中选择自定义网格组件后立即发布用户事件
- 处理自定义QT小部件中的输入事件
- 是否有任何可能的方法将事件(自定义)附加到在运行时创建的对象?[C 构建器]
- FireMonkey自定义控制点击事件在设计师中发射
- WXTREECTRL自定义事件
- 继承自定义选项卡栏和调整大小事件的实现
- 不能在绘画中使用 QPainter 自定义 QWidget 的事件 (Qt5)
- wxwidgets 自定义事件不会传播到父窗口
- 在 C++ 中编写自定义事件类
- Qt 中的自定义事件
- Q读取自定义事件
- Qt-如何在不使用插槽的情况下检测自定义事件循环中的关闭窗口
- Visual Studio自定义生成事件始终在执行
- Kurento自定义插件:如何将事件异步发送到java服务器
- 子类化 QGraphicsView,自定义鼠标事件
- Qt - 拖放 - 自定义图形场景 - 事件错误
- Qt:如何使用connect处理自定义事件
- 在 Eclipse RCP 中处理自定义设备事件