我正在尝试让QtVirtualKeyboard示例使用QQuickWidget而不是QQuickView。对于QuickView,我使用以下main.cpp代码,它很适合我:
#include <QQuickView>
#include <QGuiApplication>
#include <QQmlEngine>
int main(int argc, char *argv[])
{
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QGuiApplication app(argc, argv);
QQuickView view(QString("qrc:/%2").arg(MAIN_QML));
view.setResizeMode(QQuickView::SizeRootObjectToView);
view.show();
return app.exec();
}在使用以下main.cpp实现更改为QQuickWidgets时,我遇到了问题:
#include <QQuickWidget>
#include <QApplication>
#include <QQmlEngine>
int main(int argc, char *argv[])
{
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QApplication app(argc, argv);
QQuickWidget w(QString("qrc:/%2").arg(MAIN_QML));
w.setResizeMode(QQuickWidget::SizeRootObjectToView);
w.show();
return app.exec();
}当我点击输入栏时,虚拟键盘出现了,但当我开始在键盘上键入时,我得到了消息"input method is not set",这似乎与输入法插件有关。输入字段中不显示任何字符。有什么想法吗?在上述main.cpp变体之间,QML码没有变化
顺便说一句:我使用的是Linux,gcc,Qt 5.9.0,EGLFS插件
谢谢你的建议!
你好,帕特里克
发布于 2020-05-14 16:57:18
找到了通过inputMethod documentation查找QML的解决方案。以下解决方法适用于我:
TextArea {
...
onActiveFocusChanged: {
if(activeFocus) {
Qt.inputMethod.update(Qt.ImQueryInput)
}
}
}也可以与其他控件一起使用。
当然,在ApplicationWindow中应该像这样定义InputPanel:
ApplicationWindow {
...
InputPanel {
id: inputPanel
...
}
}https://stackoverflow.com/questions/44701805
复制相似问题