Jai*_*Jai 7 c++ qt on-screen-keyboard qt5
我想为桌面应用程序创建一个屏幕键盘.该应用程序将在Qt 5中构建.我有几个问题,请澄清它们.
什么是QInputContextQt5 的替代品?(因为我通过实现读取了关于屏幕键盘的某处,QInputContext但Qt 5不支持这种情况.)
我在哪里可以找到QPlateformInputContext&QInputPanel(在互联网搜索中我发现这两个作为替代QInputContext但不确定,而且我也找不到它们)?
我的要求:
我知道您将面临两个挑战:
回答
QObject::InstallEventFilter()在要为其提供键盘服务的小部件上使用。mouseReleaseEvent然后,您可以在链接中查找Qt 代码的相关内容。QCoreApplication::postEvent()至于,请在此处获取Qt 虚拟键盘QPlatformInputContext的示例。
我花了很长时间才找到如何在 QT5 中做到这一点,而不需要 qml 和太多的工作。所以我想分享一下:
#include <QCoreApplication>
#include <QGuiApplication>
#include <QKeyEvent>
void MainWindow::on_pushButton_clicked()
{
Qt::Key key = Qt::Key_1;;
QKeyEvent pressEvent = QKeyEvent(QEvent::KeyPress, key, Qt::NoModifier, QKeySequence(key).toString());
QKeyEvent releaseEvent = QKeyEvent(QEvent::KeyRelease, key, Qt::NoModifier);
QCoreApplication::sendEvent(QGuiApplication::focusObject(), &pressEvent);
QCoreApplication::sendEvent(QGuiApplication::focusObject(), &releaseEvent);
}
Run Code Online (Sandbox Code Playgroud)
这里的线索是,通过单击按钮(如果您手动制作键盘),向当前具有焦点的对象(例如文本框)启动 sendevent。您当然可以对文本框进行硬编码,但这仅在您只有一个输入可使用键盘时才有效。
您必须确保的最后一件事是将键盘按钮的 focusPolicy 设置为 NoFocus,以防止按下键盘时焦点移动。
学分请访问https://www.wisol.ch/w/articles/2015-07-26-virtual-keyboard-qt/
希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
21320 次 |
| 最近记录: |