Здравствуйте!
Нужно сделать простенькую цифровую экранную клавиатуру, для чего нужно генерировать сообщения нажатия кнопок клавиатуры. Сделал такой несложный метод:
void KeyEmitter::emitKey(Qt::Key key)
{
QQuickWindow* receiver = qobject_cast<QQuickWindow*>(QGuiApplication::focusWindow());
if(!receiver) {
return;
}
QKeyEvent pressEvent = QKeyEvent(QEvent::KeyPress, key, Qt::NoModifier, QKeySequence(key).toString());
QKeyEvent releaseEvent = QKeyEvent(QEvent::KeyRelease, key, Qt::NoModifier);
QGuiApplication::sendEvent(receiver, &pressEvent);
QGuiApplication::sendEvent(receiver, &releaseEvent);
}
Все сообщения доходят контролу у которого имеется фокус, но хотелось бы имитировать нажатия клавиши Tab. Tab перехватывается в TextField ( Keys.onTabPressed: console.log("tab") ) но Qt сцена никак не обрабатывает эти события и если нажать на клавишу Tab или стрелки, то курсор в TextField не будет перемещаться и фокус ввода не перейдет к другому контролу. Думаю, что вряд ли кто мне подскажет как это решить, но все таки решил сюда написать. Спасибо!
Qt 5.7 + MinGW32