gpt4 book ai didi

c++ - Qt 中的自定义事件

转载 作者:太空狗 更新时间:2023-10-29 21:47:43 25 4
gpt4 key购买 nike

我正在 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 进行处理。

关于c++ - Qt 中的自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com