首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在QML对象之间传递事件

在QML对象之间传递事件
EN

Stack Overflow用户
提问于 2014-11-13 16:58:16
回答 3查看 3.7K关注 0票数 1

在这种情况下,我希望将一个QML事件传递给初始事件处理程序中间的另一个QML项。例如:

代码语言:javascript
运行
复制
Item {
   id: item1

   Keys.onPressed: {
      // Pre-process...

      passEventToObject(event, item2);

      // Post-process based on results of event passing...
   }
}

TextInput {
   id: item2
   // Expect key press event to be handled by text input
}

我能为passEventToObject做些什么?

备注:

  • 我无法在Keys.onPressed中修改item2,这是一个QML内置(TextInput)。
  • 事件传递必须发生在item1.Keys.onPressed的中间
EN

Stack Overflow用户

回答已采纳

发布于 2014-11-13 17:15:06

在项目之间移动事件的一种方法是创建一个C++插件并使用QCoreApplication::sendEvent。不幸的是,Qt并不直接从QML KeyEvent和C++ QKeyEvent映射,因此插件的接口需要公开事件的内部:

代码语言:javascript
运行
复制
bool EventRelay::relayKeyPressEvent(
   int key,
   Qt::KeyboardModifiers modifiers,
   const QString& text,
   bool autoRepeat,
   ushort count) const
{
   QKeyEvent event(QKeyEvent::KeyPress, key, modifiers, text, autoRepeat, count);
   return relayEventToObject(&event, mpTargetObject);
}

使用它:

代码语言:javascript
运行
复制
EventRelay { id: relay }

Item {
   id: item1
   Keys.onPressed: {
      // Pre-process...

      relay.relayEventToObject(event, item2);

      // Post-process...
   }
}

TextInput {
   id: item2
}
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26914239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档