在这种情况下,我希望将一个QML事件传递给初始事件处理程序中间的另一个QML项。例如:
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
的中间发布于 2014-11-13 17:15:06
在项目之间移动事件的一种方法是创建一个C++插件并使用QCoreApplication::sendEvent
。不幸的是,Qt并不直接从QML KeyEvent
和C++ QKeyEvent
映射,因此插件的接口需要公开事件的内部:
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);
}
使用它:
EventRelay { id: relay }
Item {
id: item1
Keys.onPressed: {
// Pre-process...
relay.relayEventToObject(event, item2);
// Post-process...
}
}
TextInput {
id: item2
}
https://stackoverflow.com/questions/26914239
复制相似问题