我花了很长时间才知道如何在没有 qml 和太多工作的情况下在 QT5 中做到这一点。所以想我会分享:
#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);
}
这里的线索是,通过单击按钮(如果您要手动制作键盘),向当前具有焦点的对象(例如文本框)启动发送事件。您当然可以对文本框进行硬编码,但这仅在您只有一个输入可使用键盘时才有效。
您必须确保的最后一件事是将键盘按钮的 focusPolicy 设置为 NoFocus,以防止在按下键盘时焦点移动。
学分转到https://www.wisol.ch/w/articles/2015-07-26-virtual-keyboard-qt/
希望这可以帮助某人。