使用 QQuickWidget 运行 QtVirtualKeyboard

Run QtVirtualKeyboard using QQuickWidget

本文关键字:QtVirtualKeyboard 运行 QQuickWidget 使用      更新时间:2023-10-16

我正在尝试使QtVirtualKeyboard示例与QQuickWidget而不是QQuickView一起使用。对于概览,我使用以下主.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();
}

当我点击输入字段时,虚拟键盘出现,但是当我开始在键盘上键入时,我收到消息"未设置输入法",这似乎与输入法插件有关。输入字段中不显示字符。有什么想法吗?QML代码在上述main变体之间没有变化.cpp

顺便说一句:我正在使用Linux,gcc,Qt 5.9.0,EGLFS插件

感谢您的任何建议!

问候帕特里克

通过inputMethod文档找到了 QML 的解决方案。以下解决方法对我有用:

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

也适用于其他控件。

当然,InputPanel应该像这样用这样的ApplicationWindow来定义:

ApplicationWindow {
...
    InputPanel {
        id: inputPanel
        ...
    }
}
相关文章:
  • 没有找到相关文章