- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我最近开始使用Juce library .我通常会在其论坛上发布 Juce 相关问题,但我在很多天都在为一个问题而苦苦挣扎,但我仍然没有收到任何答案。所以 stackoveflow 确实值得一试,即使这里似乎没有很多 Juce 的用户。
问题是:
我正在使用 Juce 的组件进行一些实验。我有以下类(class):
class MyComponent : public Component{
public :
MyComponent(Component * comp){
this->child = comp;
comp->setInterceptsMouseClicks(false, false);
}
void mouseDown (const MouseEvent &e){
//do stuff
Component *target = getTopChild(this->child, e.x, e.y); //return top most component of child that would have intercept the mouse event if that wasn't intercepted by MyComponent class
if (target != NULL && doIWantToForwardEventToTarget()){
MouseEvent newEvent = e.getEventRelativeTo(target);
target->mouseDown(newEvent);
}
}
void mouseMove (const MouseEvent &e);
void mouseEnter (const MouseEvent &e);
void mouseExit (const MouseEvent &e);
void mouseDrag (const MouseEvent &e);
void mouseUp (const MouseEvent &e);
void mouseDoubleClick (const MouseEvent &e);
void mouseWheelMove (const MouseEvent &e, float wheelIncrementX, float wheelIncrementY);
private:
Component *child;
}
这个类的目的是:
存储一个组件组件层次结构(子)
拦截所有鼠标相关事件 给 child 或其后代之一
我在这个类中尝试使用 slider 组件作为子组件,甚至嵌套在其他组件中……一切正常。现在我正在用 FileBrowserComponent 做一些实验,它似乎不能正常工作。例如,当我单击按钮移动到上层目录时它不会(按钮接收鼠标事件并单击它但在 TreeView 中没有任何反应)。从列表中选择项目也不起作用。
可能是什么问题?(我做了一些实验,似乎没有调用 FileBrowserComponent 中的 buttonClicked 方法,但我不知道为什么)有什么建议吗?
我也试过这样修改代码:
void mouseDown (const MouseEvent &e){
//do stuff
Component *target = getTopChild(this->child, e.x, e.y); //return top most component of child that would have intercept the mouse event if that wasn't intercepted by MyComponent class
if (target != NULL && doIWantToForwardEventToTarget()){
target->setInterceptsMouseClicks(true, true);
MouseEvent newEvent = e.getEventRelativeTo(target);
target->mouseDown(newEvent);
target->setInterceptsMouseClicks(false, false);
}
}
还是不行。无论如何,我发现如果我对 setInterceptMouseClicks 的第二次调用发表评论(我在此之后禁用了鼠标单击),那么一切都会正常进行(即使这不是我想要获得的结果,因为我需要重新禁用鼠标事件)组件)。
这些事实可以让我想到 2 个考虑因素:
提前致谢
最佳答案
你最好从 Component 创建派生类,并在这些派生类中实现它们所需的鼠标事件,当这些事件被触发时,你可以向父类发送消息,这样它就可以做其他事情。
关于c++ - 在 Juce 库中拦截 FileBrowserComponent 上的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5965197/
我最近开始使用Juce library .我通常会在其论坛上发布 Juce 相关问题,但我在很多天都在为一个问题而苦苦挣扎,但我仍然没有收到任何答案。所以 stackoveflow 确实值得一试,即使
我是一名优秀的程序员,十分优秀!