首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QQuickWidget运行QtVirtualKeyboard

使用QQuickWidget运行QtVirtualKeyboard
EN

Stack Overflow用户
提问于 2017-06-22 22:07:07
回答 1查看 1K关注 0票数 4

我正在尝试让QtVirtualKeyboard示例使用QQuickWidget而不是QQuickView。对于QuickView,我使用以下main.cpp代码,它很适合我:

代码语言:javascript
复制
#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时,我遇到了问题:

代码语言:javascript
复制
#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插件

谢谢你的建议!

你好,帕特里克

EN

回答 1

Stack Overflow用户

发布于 2020-05-14 16:57:18

找到了通过inputMethod documentation查找QML的解决方案。以下解决方法适用于我:

代码语言:javascript
复制
TextArea {
    ...
    onActiveFocusChanged: {
        if(activeFocus) {
            Qt.inputMethod.update(Qt.ImQueryInput)
        }
    }
}

也可以与其他控件一起使用。

当然,在ApplicationWindow中应该像这样定义InputPanel

代码语言:javascript
复制
ApplicationWindow {
...
    InputPanel {
        id: inputPanel
        ...
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44701805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档