Как отправить ключевые события в активный Focused элемент qml в qt 4.8 - PullRequest
0 голосов
/ 05 августа 2020

Это может быть действительно глупый вопрос, извините за это.

Я пытаюсь написать виртуальную клавиатуру в QML во встроенном Qt 4.8, мне нужно имитировать события нажатия клавиш для «Enter» и Клавиши "BackSpace". Я нашел несколько кодов, подобных следующему, которые создавали отправителя сигнала в С ++ для отправки события:

Q_INVOKABLE void keyPressed(QObject * rc,int k) {
    QKeyEvent keyPressEvent = QKeyEvent(QEvent::KeyPress, k, Qt::NoModifier, QKeySequence(k).toString());
    QCoreApplication::sendEvent(rc, &keyPressEvent);
}
Q_INVOKABLE  void emitKey(Qt::Key key)
{
    QQuickItem* receiver = qobject_cast<QQuickItem*>(QGui::focusObject());
    if(!receiver) {
        return;
    }
    QKeyEvent pressEvent = QKeyEvent(QEvent::KeyPress, key, Qt::NoModifier, QKeySequence(key).toString());
    QKeyEvent releaseEvent = QKeyEvent(QEvent::KeyRelease, key, Qt::NoModifier);
    QCoreApplication::sendEvent(receiver->focusWidget(), &pressEvent);
    QCoreApplication::sendEvent(receiver->focusWidget(), &releaseEvent);
}

, но в первой функции я не знаю, как передать идентификатор получателя сфокусированного элемента, и во второй функции в моем Qt нет «QQuickItem».

Как мне передать или получить текущий сфокусированный элемент в qml или в cpp? При любом поиске я ничего не нашел ...

...