I have a situation where I would like to pass a QML event to another QML item in the middle of the initial event handler. e.g.
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
}
What can I do to acheive passEventToObject
?
Notes:
- I don't have access to modify
Keys.onPressed
insideitem2
, it's a QML built-in (TextInput
). - The event passing must happen in the middle of
item1.Keys.onPressed
One method to move events between Items is to create a C++ plugin and use
QCoreApplication::sendEvent
. Unfortunately, Qt doesn't map directly from the QMLKeyEvent
and the C++QKeyEvent
, so the interface to the plugin will need to expose the internals of the event:To use it:
You can simply invoke the other object's signal in your first object signal handler :
I think it could be useful the section "Signal to Signal Connect" that you can find here. Basically, each signal has a
connect
method which can be exploited to create a signals chain.If you are interested to forword key events (as in your example) consider instead the
forwardTo
property:The documentation provides a nice and simple example.