对于我基于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中介移这一点的想法,但在哪里有乐趣。:) 所以我想询问您对该主题的指导。 顺便说一句,我通过Web上搜索了信息,但没有找到工作代码。

有帮助吗?

解决方案

向Qt快速对象发送键事件就像:

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

你也可以看看输入面板示例。它显示了如何仅使用指针和无键盘输入输入面板将文本输入到小部件中。

另一个是虚拟键盘。请参阅源代码并将其更改以满足您的需求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top