使用QQuickWidget运行QtVirtualKeyboard

4

我正在尝试将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();
}

我在将主.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();
}

当我点击输入字段时,虚拟键盘会弹出,但当我开始在键盘上输入时,我收到“未设置输入法”的消息,似乎与输入法插件有关。输入字段中没有字符出现。有什么想法吗?QML代码在main.cpp的不同变体之间没有更改。
顺便说一下:我正在使用Linux、gcc、Qt 5.9.0和EGLFS插件。感谢任何建议!
敬礼, Patrick

我进行了进一步的测试,相同的代码可以在Qt 5.8.0上运行,但在5.9.0上失败了。 - pvb
非常奇怪的错误:我在5.12.x版本中正常使用虚拟键盘,然后意外地开始出现这些奇怪的错误:“输入法未设置”。有没有更新的方法来解决这个问题? - Aleksey Kontsevich
1个回答

1

在查看inputMethod文档时,我找到了解决QML问题的方法。以下解决方法适用于我:

TextArea {
    ...
    onActiveFocusChanged: {
        if(activeFocus) {
            Qt.inputMethod.update(Qt.ImQueryInput)
        }
    }
}

与其他控件配合使用也是可以的。
当然,“InputPanel”应该在“ApplicationWindow”中定义,如下所示:
ApplicationWindow {
...
    InputPanel {
        id: inputPanel
        ...
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接