qt — Имитация нажатия клавиш в C ++ для использования в QML для виртуальной клавиатуры

Для моего приложения на основе 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, но где в этом удовольствие? 🙂
Поэтому я хотел бы попросить вашего руководства по этому вопросу.
Кстати, я искал информацию в Интернете, но не нашел никакого рабочего кода.

1

Решение

Отправка ключевого события в объект Qt Quick выглядит следующим образом:

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

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

Еще один Виртуальная клавиатура. Посмотрите исходный код и измените его в соответствии с вашими потребностями.

3

Другие решения


По вопросам рекламы [email protected]