用c++模拟按键,用于QML虚拟键盘
Simulating key press in C++ for use in QML for virtual keyboard
对于我基于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对象发送键事件如下:
QKeyEvent *event = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);
QCoreApplication::postEvent (engine->rootObjects().first(), event);
你也可以看看输入面板的例子。它展示了如何通过输入面板仅使用指针而不使用键盘将文本输入到小部件中。
另一个是VirtualKeyboard。查看源代码并修改它以满足您的需要。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 从C++实例化QML
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 使用CMake创建QML插件
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- QT通过C++添加映射QML项目
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在没有信号的情况下从C++执行QML插槽
- 如何创建用于 QML 的通用对象模型
- Qml网格、列和行布局不适用于LayoutMirroring
- QML和一种适用于Windows的地图/定位技术的集成
- 用c++模拟按键,用于QML虚拟键盘
- 上的QML将C++用于业务逻辑