C++ 使用QQuickWidget运行QtVirtualKeyboard
我试图使QtVirtualKeyboard示例与QQuickWidget而不是QQuickView一起工作。对于QuickView,我使用以下main.cpp代码,这对我来说很好:C++ 使用QQuickWidget运行QtVirtualKeyboard,c++,qt,qt5,qtvirtualkeyboard,qquickwidget,C++,Qt,Qt5,Qtvirtualkeyboard,Qquickwidget,我试图使QtVirtualKeyboard示例与QQuickWidget而不是QQuickView一起工作。对于QuickView,我使用以下main.cpp代码,这对我来说很好: #include <QQuickView> #include <QGuiApplication> #include <QQmlEngine> int main(int argc, char *argv[]) { qputenv("QT_IM_MODULE", QByteA
#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();
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
qputenv(“QT_IM_模块”,QByteArray(“qtvirtualkeyboard”);
QGUI应用程序应用程序(argc、argv);
QQuickView视图(QString(“qrc:/%2”).arg(MAIN_QML));
setResizeMode(QQuickView::SizerootObject-view);
view.show();
返回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();
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
qputenv(“QT_IM_模块”,QByteArray(“qtvirtualkeyboard”);
QApplication应用程序(argc、argv);
QQuickWidget w(QString(“qrc:/%2”).arg(MAIN_QML));
w、 setResizeMode(QQuickWidget::SizeRootObjectToView);
w、 show();
返回app.exec();
}
当我点击输入字段时,虚拟键盘会显示出来,但当我开始在键盘上输入时,我会收到消息“input method is not set”(输入法未设置),这似乎与输入法插件有关。输入字段中不显示字符。
有什么想法吗?QML代码在main.cpp的上述变体之间没有更改
顺便说一句:我正在使用Linux、gcc、Qt5.9.0、EGLFS插件
谢谢你的建议
问候,,
Patrick找到了QML的解决方案。以下变通方法适合我:
TextArea {
...
onActiveFocusChanged: {
if(activeFocus) {
Qt.inputMethod.update(Qt.ImQueryInput)
}
}
}
也可以与其他控件一起使用
当然,InputPanel
应该在ApplicationWindow
中定义如下:
ApplicationWindow {
...
InputPanel {
id: inputPanel
...
}
}
我做了一些进一步的测试,同样的代码适用于Qt5.8.0,但在5.9.0上失败了非常奇怪的错误:我在5.12.x中使用了虚拟键盘,然后意外地开始出现这些奇怪的错误:
输入法未设置
。如何修复此问题有任何更新吗?