如何在Qt中创建自定义车轮事件
How to create custom wheel events in Qt?
我发现了关于自定义QEvents
的多个问题。因此,自Qt 4以来,我们必须从QEvent
派生并注册我们的自定义类型。这里有一些样品。
我想要的是一个QWheelEvent
与自定义数据在它。因此,事件应该在任何地方都可用作为"正常"的QWheelEvent
,但如果我想,我可以检查我的CustomWheelEvent
类型并从中检索数据。
问题是我不知道如何注册类型,因为QWheelEvent
的构造函数不提供设置事件类型的可能性。
查看QEvent
的内部,我可以简单地将受保护的成员Type t设置为registerEventType()
返回的事件类型。这有副作用吗?
如果我只是从QWheelEvent
派生,我也可以使用dynamic_cast
来确定它是否是我自己的事件携带我的自定义数据。但是,在检查类型之后进行简单的静态强制转换应该更好。
对此有什么想法吗?
编辑:我已经尝试了dynamic_casts
的方法,但cast似乎失败了。如果Qt内部深度复制事件,这是可能的,这样就可以创建一个新的QWheelEvent
,并通过事件系统传递,而不是我的CustomWheelEvent
。这样,我自己的数据(在CustomWheelEvent
中定义)从对象中剥离出来,只处理基类(QWheelEvent
)。我最初认为指针是按原样使用的,这样我就可以依靠dynamic_cast
。更多的信息,这是赞赏!
阅读以下内容:Qt:定义自定义事件类型
我认为你确实想要注册事件,它将返回一个新的未使用的类型(数字)。在上面的示例中,静态对象将值设置为QEvent::None。我看到的解决方案的主要问题是,它不是线程安全的,所以,一定要使这个线程安全的某种方式(如可能调用静态类型的方法之前,事情开始,以便他们被初始化之前,它可以在多线程的方式使用)。
- 如何解决:自定义QGraphics项目接收鼠标新闻事件坐标延迟/滞后?
- 在UE4中,玩家进行光线投射、击中物体并触发自定义事件C++
- 如何在Maya中选择自定义网格组件后立即发布用户事件
- 处理自定义QT小部件中的输入事件
- WXTREECTRL自定义事件
- wxwidgets 自定义事件不会传播到父窗口
- 在 C++ 中编写自定义事件类
- Qt 中的自定义事件
- Q读取自定义事件
- Qt-如何在不使用插槽的情况下检测自定义事件循环中的关闭窗口
- Qt:如何使用connect处理自定义事件
- 如何处理自定义事件
- COM c++中的自定义事件处理
- Active X控件自定义事件无法在Javascript中激发
- 我如何使自定义事件与VTK
- Qt中默认控件的自定义事件
- c++中的自定义事件监听器
- 这是实现自定义事件处理程序的正确方法吗?
- 有没有一种更干净的方式来注册Qt自定义事件
- 在运行时创建自定义事件