Domanda

Per la mia applicazione basata su QML vorrei avere una tastiera virtuale (Qt Enterprise è una tale presa in giro, ma 200 $ <è al di là delle mie capacità), quindi ho deciso di scrivere il mio.Ma non sono sicuro di come:

Ecco come vedo il codice:

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);


}
.

Ho alcune idee su come accelerare questo in solo QML, ma dov'è il divertimento in questo.:) Quindi vorrei chiedere la tua guida sull'argomento. A proposito, ho cercato tramite informazioni sul web, ma nessun codice di lavoro trovato.

È stato utile?

Soluzione

Invio di un evento chiave a un oggetto Qt Quick è come:

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

Puoi anche dare un'occhiata a Esempio del pannello di ingresso .Mostra come inserire il testo nei widget da un pannello di ingresso utilizzando solo il puntatore e nessuna tastiera.

Un altro è VirtualKeyboard .Vedi il codice sorgente e modificalo per soddisfare le tue esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top