在C ++中模拟键按QML用于虚拟键盘的QML
-
21-12-2019 - |
题
对于我基于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);
.
不隶属于 StackOverflow