Имитация ключей Нажмите в C ++ для использования в QML для виртуальной клавиатуры

StackOverflow https://stackoverflow.com//questions/25053147

Вопрос

Для моего приложения на основе QML я хотел бы иметь виртуальную клавиатуру (QT Enterprise - это такая дразнить, но 200 $ <выходит за рамки моих возможностей), поэтому я решил написать свой собственный.Но я не совсем уверен, как:

Вот как я вижу код:

keypress.h

#ifndef KEYPRESS_H
#define KEYPRESS_H

#include <QObject>

class KeyPress : public QObject
{

    Q_OBJECT

public:
    explicit KeyPress(QObject *parent = 0);

    Q_INVOKABLE void virtKeyPress(const int& Char);

signals:
    void virtKeyPressed(const int& source);

private:
    int vKey;
};

#endif // KEYPRESS_H
.

keypress.cpp

#include "keypress.h"
#include <QKeyEvent>

KeyPress::KeyPress(QObject *parent) :
    QObject(parent)
{

}

void KeyPress::virtKeyPress(const int &Char){

    vKey = Char;
    QKeyEvent event(QEvent::KeyPress, vKey, Qt::NoModifier);
    // Here I guess I should do somthing like "sendEvent(parent, &event);" or whatever, but nothing seems to work.
    emit virtKeyPressed(vKey);


}
.

У меня есть несколько идей о том, как занять это просто QML, но где в этом веселье.:) Поэтому я хотел бы попросить вашего руководства по этому вопросу. Кстати, я искал информацию о Интернете, но не найден рабочий код.

Это было полезно?

Решение

Отправка ключевого события на Qt Quick Object - это как:

QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
QCoreApplication::postEvent (engine->rootObjects().first(), event);
.

Вы также можете взглянуть на Пример входной панели .Он показывает, как вводить текст в виджеты на панели входных данных, используя только клавиатуру указателя.

Другой - это VirtualKeyboard .Смотрите исходный код и измените его в соответствии с вашими потребностями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top