qtvirtualkeyboard Chinese word candidate list on embedded linux



  • Hello,

    I have been ported QT 5.11.3 to my own embedded linux platform, based on ARM v7a chip.

    This is running on windowns7 created by QTCreator 4.9.2 , with QT 5.11.3.
    I can select the word what i need from upside candidate list.
    alt text

    But when I compile and run it on my embedded system, select bar won't appear after i typed the spell.
    alt text

    this is my code:

    • .pro
    QT += quick qml
    
    CONFIG += c++11
    
    
    
    QTPLUGIN+=qtvirtualkeyboardplugin
    
    
    QT+=svg
    
    QT_IM_MODULE=qtvirtualkeyboard myapp
    
    
    # The following define makes your compiler emit warnings if you use
    
    # any Qt feature that has been marked deprecated (the exact warnings
    
    # depend on your compiler). Refer to the documentation for the
    
    # deprecated API to know how to port your code away from it.
    
    DEFINES += QT_DEPRECATED_WARNINGS
    
    
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    
    # In order to do so, uncomment the following line.
    
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    
    
    SOURCES += \
    
            main.cpp
    
    
    
    RESOURCES += qml.qrc
    
    
    
    # Additional import path used to resolve QML modules in Qt Creator's code model
    
    QML_IMPORT_PATH =
    
    
    
    # Additional import path used to resolve QML modules just for Qt Quick Designer
    
    QML_DESIGNER_IMPORT_PATH =
    
    
    
    # Default rules for deployment.
    
    qnx: target.path = /tmp/$${TARGET}/bin
    
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    
    !isEmpty(target.path): INSTALLS += target
    
    • main.cpp
    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QFont>
    
    int main(int argc, char *argv[])
    
    {
        QFont font; 
        font.setPointSize(10);
        font.setFamily("MSJH"); 
    
        qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    
        QGuiApplication app(argc, argv);
    
        app.setFont(font);
    
        QQmlApplicationEngine engine;
    
        const QUrl url(QStringLiteral("qrc:/main.qml"));
    
        QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
    
                         &app, [url](QObject *obj, const QUrl &objUrl) {
    
            if (!obj && url == objUrl)
    
                QCoreApplication::exit(-1);
    
        }, Qt::QueuedConnection);
    
        engine.load(url);
    
    
    
        return app.exec();
    
    }
    
    • main.qml
    import QtQuick 2.10
    import QtQuick.Window 2.10
    import QtQuick.Controls 2.2
    import QtQuick.VirtualKeyboard 2.3
    
    Window {
        width:1024
        height: 600
        id:root
        visible:true
        Rectangle{
            anchors.fill:parent
        }
        TextField{
            id:key
            anchors.top: parent.top
            anchors.horizontalCenter: parent.horizontalCenter
    	anchors.bottom: InputPanel.top
            focus:true
        }
        InputPanel{
            id:vkb
            visible:true
            active:true
            anchors.fill:parent
        	anchors.left: parent.left
            anchors.right: parent.right
        }
    }
    
    • configuration when cross compile QT5.11.3
    ./configure 
    -release 
    -sysroot /home/admin/Desktop/file_partition/sysroot 
    -prefix /release -extprefix /home/admin/Desktop/file_partition/release_11_3 
    -opensource
    -make libs 
    -xplatform linux-arm-gnueabi-g++ 
    -no-pch -qt-libjpeg 
    -no-opengl 
    -skip qt3d 
    -skip qtcanvas3d 
    -skip qtpurchasing
    -no-sse2 -no-openssl 
    -no-iconv 
    -nomake examples 
    -skip qtserialbus 
    -evdev
    -I/home/admin/Desktop/qtsource/corssbin/ts_release/include 
    -L/home/admin/Desktop/qtsource/corssbin/ts_release/lib 
    -make libs
    
    • included parts
    Building on: linux-g++ (x86_64, CPU features: mmx sse sse2)
    Building for: linux-arm-gnueabi-g++ (arm, CPU features: <none>)
    Configuration: cross_compile compile_examples enable_new_dtags largefile shared rpath release c++11 c++14 concurrent dbus reduce_exports stl
    Build options:
      Mode ................................... release
      Optimize release build for size ........ no
      Building shared libraries .............. yes
      Using C++ standard ..................... C++14
      Using ccache ........................... no
      Using gold linker ...................... no
      Using new DTAGS ........................ yes
      Using precompiled headers .............. no
      Using LTCG ............................. no
      Target compiler supports:
        NEON ................................. no
      Build parts ............................ libs libs
    Qt modules and options:
      Qt Concurrent .......................... yes
      Qt D-Bus ............................... yes
      Qt D-Bus directly linked to libdbus .... yes
      Qt Gui ................................. yes
      Qt Network ............................. yes
      Qt Sql ................................. yes
      Qt Testlib ............................. yes
      Qt Widgets ............................. yes
      Qt Xml ................................. yes
    Support enabled for:
      Using pkg-config ....................... yes
      udev ................................... yes
      Using system zlib ...................... yes
    Qt Core:
      DoubleConversion ....................... yes
        Using system DoubleConversion ........ no
      GLib ................................... yes
      iconv .................................. no
      ICU .................................... yes
      Tracing backend ........................ <none>
      Logging backends:
        journald ............................. no
        syslog ............................... no
        slog2 ................................ no
      Using system PCRE2 ..................... no
    Qt Network:
      getifaddrs() ........................... yes
      IPv6 ifname ............................ yes
      libproxy ............................... no
      Linux AF_NETLINK ....................... no
      OpenSSL ................................ no
        Qt directly linked to OpenSSL ........ no
      OpenSSL 1.1 ............................ no
      SCTP ................................... no
      Use system proxies ..................... yes
    Qt Gui:
      Accessibility .......................... yes
      FreeType ............................... yes
        Using system FreeType ................ yes
      HarfBuzz ............................... yes
        Using system HarfBuzz ................ no
      Fontconfig ............................. yes
      Image formats:
        GIF .................................. yes
        ICO .................................. yes
        JPEG ................................. yes
          Using system libjpeg ............... no
        PNG .................................. yes
          Using system libpng ................ yes
      EGL .................................... no
      OpenVG ................................. no
      OpenGL:
        Desktop OpenGL ....................... no
        OpenGL ES 2.0 ........................ no
        OpenGL ES 3.0 ........................ no
        OpenGL ES 3.1 ........................ no
        OpenGL ES 3.2 ........................ no
      Vulkan ................................. no
      Session Management ..................... yes
    Features used by QPA backends:
      evdev .................................. yes
      libinput ............................... no
      INTEGRITY HID .......................... no
      mtdev .................................. no
      tslib .................................. yes
      xkbcommon-evdev ........................ no
    QPA backends:
      DirectFB ............................... no
      EGLFS .................................. no
      LinuxFB ................................ yes
      VNC .................................... yes
      Mir client ............................. no
    Qt Widgets:
      GTK+ ................................... no
      Styles ................................. Fusion Windows
    Qt PrintSupport:
      CUPS ................................... no
    Qt Sql:
      DB2 (IBM) .............................. no
      InterBase .............................. no
      MySql .................................. no
      OCI (Oracle) ........................... no
      ODBC ................................... no
      PostgreSQL ............................. no
      SQLite2 ................................ no
      SQLite ................................. yes
        Using system provided SQLite ......... no
      TDS (Sybase) ........................... no
    Qt Testlib:
      Tester for item models ................. yes
    QtXmlPatterns:
      XML schema support ..................... yes
    Qt QML:
      QML network support .................... yes
      QML debugging and profiling support .... yes
      QML delegate model ..................... yes
    Qt Quick:
      Direct3D 12 ............................ no
      AnimatedImage item ..................... yes
      Canvas item ............................ yes
      Support for Qt Quick Designer .......... yes
      Flipable item .......................... yes
      GridView item .......................... yes
      ListView item .......................... yes
      Path support ........................... yes
      PathView item .......................... yes
      Positioner items ....................... yes
      Repeater item .......................... yes
      ShaderEffect item ...................... yes
      Sprite item ............................ yes
    Qt Gamepad:
      SDL2 ................................... no
    Qt Wayland Client ........................ no
    Qt Wayland Compositor .................... no
    Qt Bluetooth:
      BlueZ .................................. yes
      BlueZ Low Energy ....................... yes
      Linux Crypto API ....................... yes
      WinRT Bluetooth API (desktop & UWP) .... no
    Qt Sensors:
      sensorfw ............................... no
    Qt Quick Controls 2:
      Styles ................................. Default Fusion Imagine Material Universal
    Qt Quick Templates 2:
      Hover support .......................... yes
      Multi-touch support .................... yes
    Qt Positioning:
      Gypsy GPS Daemon ....................... no
      WinRT Geolocation API .................. no
    Qt Location:
      Qt.labs.location experimental QML plugin . yes
      Geoservice plugins:
        OpenStreetMap ........................ yes
        HERE ................................. yes
        Esri ................................. yes
        Mapbox ............................... yes
        MapboxGL ............................. no
        Itemsoverlay ......................... yes
    Qt Multimedia:
      ALSA ................................... yes
      GStreamer 1.0 .......................... no
      GStreamer 0.10 ......................... yes
      Video for Linux ........................ yes
      OpenAL ................................. no
      PulseAudio ............................. no
      Resource Policy (libresourceqt5) ....... no
      Windows Audio Services ................. no
      DirectShow ............................. no
      Windows Media Foundation ............... no
    Qt WebEngine:
      Embedded build ......................... yes
      Pepper Plugins ......................... no
      Printing and PDF ....................... no
      Proprietary Codecs ..................... no
      Spellchecker ........................... yes
      Native Spellchecker .................... no
      WebRTC ................................. no
      Use System Ninja ....................... no
      Geolocation ............................ yes
      Use v8 snapshot ........................ yes
      Building v8 snapshot supported ......... no
      Use ALSA ............................... yes
      Use PulseAudio ......................... no
      Optional system libraries used:
        re2 .................................. no
        icu .................................. no
        libwebp, libwebpmux and libwebpdemux . no
        opus ................................. no
        ffmpeg ............................... no
        libvpx ............................... no
        snappy ............................... no
        libsrtp .............................. no
        glib ................................. yes
        zlib ................................. yes
        minizip .............................. no
        libevent ............................. no
        jsoncpp .............................. no
        protobuf ............................. no
        libxml2 and libxslt .................. no
        lcms2 ................................ no
        png .................................. yes
        JPEG ................................. no
        harfbuzz ............................. no
        freetype ............................. yes
      Required system libraries:
        fontconfig ........................... yes
        dbus ................................. yes
        nss .................................. no
        khr .................................. no
        glibc ................................ yes
      Required system libraries for qpa-xcb:
        libdrm ............................... no
        xcomposite ........................... no
        xcursor .............................. no
        xi ................................... no
        xrandr ............................... no
        xtst ................................. no
    
    
    • platform environment before executing programe.
    
    export LD_LIBRARY_PATH='/emmc/ts_lib/lib:/emmc/qt_dir/lib:/emmc/qt_dir/plugins/platforms:/lib:/usr/lib:/usr/local/lib'
    export PATH='/usr/bin:/bin:/usr/sbin:/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin'
    
    export QT_ROOT='/emmc/qt_dir'
    export QML2_IMPORT_PATH='/emmc/qt_dir/qml'
    export QML_IMPORT_PATH='/emmc/qt_dir/qml'
    export QT_DEBUG_PLUGINS='1'
    export QT_IM_MODULE='qtvirtualkeyboard'
    export QT_PLUGIN_PATH='/emmc/qt_dir/plugins'
    
    export QT_QPA_FB_DRM='2'
    export QT_QPA_FB_TSLIB='1'
    export QT_QPA_FONTDIR='/emmc/qt_dir/lib/fonts'
    export QT_QPA_GENERIC_PLUGINS='tslib'
    export QT_QPA_PLATFORM='linuxfb:fb=/dev/fb0'
    export QT_QPA_PLATFORM_PLUGIN_PATH='/emmc/qt_dir/plugins/platforms'
    
    export QT_VIRTUALKEYBOARD_PINYIN_DICTIONARY='/emmc/qt_dir/qtvirtualkeyboard/pinyin/dict_pinyin.dat'
    export QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARY='/emmc/qt_dir/qtvirtualkeyboard/tcime/dict_zhuyin.dat'
    export TSLIB_CONFFILE='/emmc/ts_lib/etc/ts.conf'
    export TSLIB_CONSOLEDEVICE='none'
    export TSLIB_FBDEVICE='/dev/fb0'
    export TSLIB_PLUGINDIR='/emmc/ts_lib/lib/ts'
    export TSLIB_ROOT='/emmc/ts_lib'
    export TSLIB_TSDEVICE='/dev/input/event2'
    

    checked DICTIONARY file ,it's exist.

    • debug information
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqlinuxfb.so"
    Found metadata in lib /emmc/qt_dir/plugins/platforms/libqlinuxfb.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "linuxfb"
            ]
        },
        "className": "QLinuxFbIntegrationPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("linuxfb")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqminimal.so"
    Found metadata in lib /emmc/qt_dir/plugins/platforms/libqminimal.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "minimal"
            ]
        },
        "className": "QMinimalIntegrationPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("minimal")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqoffscreen.so"
    Found metadata in lib /emmc/qt_dir/plugins/platforms/libqoffscreen.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "offscreen"
            ]
        },
        "className": "QOffscreenIntegrationPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("offscreen")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqvnc.so"
    Found metadata in lib /emmc/qt_dir/plugins/platforms/libqvnc.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
        "MetaData": {
            "Keys": [
                "vnc"
            ]
        },
        "className": "QVncIntegrationPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("vnc")
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/root/qts" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms/platforms" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms" ...
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqlinuxfb.so"
    Got keys from plugin meta data ("linuxfb")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqminimal.so"
    Got keys from plugin meta data ("minimal")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqoffscreen.so"
    Got keys from plugin meta data ("offscreen")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforms/libqvnc.so"
    Got keys from plugin meta data ("vnc")
    QFactoryLoader::QFactoryLoader() checking directory path "/root/qts/platforms" ...
    loaded library "/emmc/qt_dir/plugins/platforms/libqlinuxfb.so"
    QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms/platforminputcontexts" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforminputcontexts" ...
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPlatformInputContextFactoryInterface.5.1",
        "MetaData": {
            "Keys": [
                "ibus"
            ]
        },
        "className": "QIbusPlatformInputContextPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("ibus")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QPlatformInputContextFactoryInterface.5.1",
        "MetaData": {
            "Keys": [
                "qtvirtualkeyboard"
            ]
        },
        "className": "QVirtualKeyboardPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("qtvirtualkeyboard")
    QFactoryLoader::QFactoryLoader() checking directory path "/root/qts/platforminputcontexts" ...
    loaded library "/emmc/qt_dir/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so"
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms/generic" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/generic" ...
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/generic/libqevdevkeyboardplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/generic/libqevdevkeyboardplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QGenericPluginFactoryInterface",
        "MetaData": {
            "Keys": [
                "EvdevKeyboard"
            ]
        },
        "className": "QEvdevKeyboardPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("evdevkeyboard")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/generic/libqevdevmouseplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/generic/libqevdevmouseplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QGenericPluginFactoryInterface",
        "MetaData": {
            "Keys": [
                "EvdevMouse"
            ]
        },
        "className": "QEvdevMousePlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("evdevmouse")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/generic/libqevdevtabletplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/generic/libqevdevtabletplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QGenericPluginFactoryInterface",
        "MetaData": {
            "Keys": [
                "EvdevTablet"
            ]
        },
        "className": "QEvdevTabletPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("evdevtablet")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/generic/libqevdevtouchplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/generic/libqevdevtouchplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QGenericPluginFactoryInterface",
        "MetaData": {
            "Keys": [
                "EvdevTouch"
            ]
        },
        "className": "QEvdevTouchScreenPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("evdevtouch")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/generic/libqtslibplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/generic/libqtslibplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QGenericPluginFactoryInterface",
        "MetaData": {
            "Keys": [
                "Tslib",
                "TslibRaw"
            ]
        },
        "className": "QTsLibPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("tslib", "tslibraw")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/generic/libqtuiotouchplugin.so"
    Found metadata in lib /emmc/qt_dir/plugins/generic/libqtuiotouchplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QGenericPluginFactoryInterface",
        "MetaData": {
            "Keys": [
                "TuioTouch"
            ]
        },
        "className": "QTuioTouchPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("tuiotouch")
    QFactoryLoader::QFactoryLoader() checking directory path "/root/qts/generic" ...
    loaded library "/emmc/qt_dir/plugins/generic/libqtslibplugin.so"
    Found metadata in lib /emmc/qt_dir/qml/QtQuick.2/libqtquick2plugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QQmlExtensionInterface/1.0",
        "MetaData": {
        },
        "className": "QtQuick2Plugin",
        "debug": false,
        "uri": [
            "QtQuick.2"
        ],
        "version": 330499
    }
    
    
    loaded library "/emmc/qt_dir/qml/QtQuick.2/libqtquick2plugin.so"
    Found metadata in lib /emmc/qt_dir/qml/QtQuick/Window.2/libwindowplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QQmlExtensionInterface/1.0",
        "MetaData": {
        },
        "className": "QtQuick2WindowPlugin",
        "debug": false,
        "uri": [
            "QtQuick.Window.2"
        ],
        "version": 330499
    }
    
    
    loaded library "/emmc/qt_dir/qml/QtQuick/Window.2/libwindowplugin.so"
    Found metadata in lib /emmc/qt_dir/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QQmlExtensionInterface/1.0",
        "MetaData": {
        },
        "className": "QtQuickControls2Plugin",
        "debug": false,
        "uri": [
            "QtQuick.Controls.2"
        ],
        "version": 330499
    }
    
    
    loaded library "/emmc/qt_dir/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so"
    Found metadata in lib /emmc/qt_dir/qml/QtQuick/Templates.2/libqtquicktemplates2plugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QQmlExtensionInterface/1.0",
        "MetaData": {
        },
        "className": "QtQuickTemplates2Plugin",
        "debug": false,
        "uri": [
            "QtQuick.Templates.2"
        ],
        "version": 330499
    }
    
    
    loaded library "/emmc/qt_dir/qml/QtQuick/Templates.2/libqtquicktemplates2plugin.so"
    Found metadata in lib /emmc/qt_dir/qml/QtQuick/Layouts/libqquicklayoutsplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QQmlExtensionInterface/1.0",
        "MetaData": {
        },
        "className": "QtQuickLayoutsPlugin",
        "debug": false,
        "uri": [
            "QtQuick.Layouts"
        ],
        "version": 330499
    }
    
    
    loaded library "/emmc/qt_dir/qml/QtQuick/Layouts/libqquicklayoutsplugin.so"
    Found metadata in lib /emmc/qt_dir/qml/QtQuick/VirtualKeyboard/Styles/libqtvirtualkeyboardstylesplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QQmlExtensionInterface/1.0",
        "MetaData": {
        },
        "className": "QtVirtualKeyboardStylesPlugin",
        "debug": false,
        "uri": [
            "QtQuick.VirtualKeyboard.Styles"
        ],
        "version": 330499
    }
    
    
    loaded library "/emmc/qt_dir/qml/QtQuick/VirtualKeyboard/Styles/libqtvirtualkeyboardstylesplugin.so"
    Found metadata in lib /emmc/qt_dir/qml/Qt/labs/folderlistmodel/libqmlfolderlistmodelplugin.so, metadata=
    {
        "IID": "org.qt-project.Qt.QQmlExtensionInterface/1.0",
        "MetaData": {
        },
        "className": "QmlFolderListModelPlugin",
        "debug": false,
        "uri": [
            "Qt.labs.folderlistmodel"
        ],
        "version": 330499
    }
    
    
    loaded library "/emmc/qt_dir/qml/Qt/labs/folderlistmodel/libqmlfolderlistmodelplugin.so"
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms/imageformats" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/imageformats" ...
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqgif.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqgif.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "gif"
            ],
            "MimeTypes": [
                "image/gif"
            ]
        },
        "className": "QGifPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("gif")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqicns.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqicns.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "icns"
            ],
            "MimeTypes": [
                "image/x-icns"
            ]
        },
        "className": "QICNSPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("icns")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqico.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqico.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "ico",
                "cur"
            ],
            "MimeTypes": [
                "image/vnd.microsoft.icon",
                "image/vnd.microsoft.icon"
            ]
        },
        "className": "QICOPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("ico", "cur")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqjpeg.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqjpeg.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "jpg",
                "jpeg"
            ],
            "MimeTypes": [
                "image/jpeg",
                "image/jpeg"
            ]
        },
        "className": "QJpegPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("jpg", "jpeg")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqsvg.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqsvg.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "svg",
                "svgz"
            ],
            "MimeTypes": [
                "image/svg+xml",
                "image/svg+xml-compressed"
            ]
        },
        "className": "QSvgPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("svg", "svgz")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqtga.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqtga.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "tga"
            ],
            "MimeTypes": [
                "image/x-tga"
            ]
        },
        "className": "QTgaPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("tga")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqtiff.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqtiff.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "tiff",
                "tif"
            ],
            "MimeTypes": [
                "image/tiff",
                "image/tiff"
            ]
        },
        "className": "QTiffPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("tiff", "tif")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqwbmp.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqwbmp.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "wbmp"
            ],
            "MimeTypes": [
                "image/vnd.wap.wbmp"
            ]
        },
        "className": "QWbmpPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("wbmp")
    QFactoryLoader::QFactoryLoader() looking at "/emmc/qt_dir/plugins/imageformats/libqwebp.so"
    Found metadata in lib /emmc/qt_dir/plugins/imageformats/libqwebp.so, metadata=
    {
        "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
        "MetaData": {
            "Keys": [
                "webp"
            ],
            "MimeTypes": [
                "image/webp"
            ]
        },
        "className": "QWebpPlugin",
        "debug": false,
        "version": 330499
    }
    
    
    Got keys from plugin meta data ("webp")
    QFactoryLoader::QFactoryLoader() checking directory path "/root/qts/imageformats" ...
    loaded library "/emmc/qt_dir/plugins/imageformats/libqgif.so"
    loaded library "/emmc/qt_dir/plugins/imageformats/libqicns.so"
    loaded library "/emmc/qt_dir/plugins/imageformats/libqico.so"
    loaded library "/emmc/qt_dir/plugins/imageformats/libqjpeg.so"
    loaded library "/emmc/qt_dir/plugins/imageformats/libqsvg.so"
    loaded library "/emmc/qt_dir/plugins/imageformats/libqtga.so"
    Cannot load library /emmc/qt_dir/plugins/imageformats/libqtiff.so: (libtiff.so.5: cannot open shared object file: No such file or directory)
    QLibraryPrivate::loadPlugin failed on "/emmc/qt_dir/plugins/imageformats/libqtiff.so" : "Cannot load library /emmc/qt_dir/plugins/imageformats/libqtiff.so: (libtiff.so.5: cannot open shared object file: No such file or directory)"
    loaded library "/emmc/qt_dir/plugins/imageformats/libqwbmp.so"
    loaded library "/emmc/qt_dir/plugins/imageformats/libqwebp.so"
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms/accessiblebridge" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/accessiblebridge" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/root/qts/accessiblebridge" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/platforms/accessible" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/emmc/qt_dir/plugins/accessible" ...
    QFactoryLoader::QFactoryLoader() checking directory path "/root/qts/accessible" ...
    


  • I tryed to use

    QtQuick.VirtualKeyboard.Settings 2.2
    

    set variable.

    wordCandidateList.alwaysVisible = true
    

    it shows candidate list rectangle now, but still empty, no any candidate appear.



  • I found that Japaneese Kanji work normally, maybe it's chinese dictionary problem.



  • Hello guys.
    I solved the problem.

    It's because of dictionary path compiled as absolute prefix path.

    I checked the source code,
    qtvirtualkeyboard\src\virtualkeyboard\tcinputmethod.cpp

    382        if (inputMode == InputEngine::Zhuyin) {
    383            if (d->zhuyinDictionary.isEmpty()) {
    384                QString zhuyinDictionary(qEnvironmentVariable("QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARY"));
    385                if (zhuyinDictionary.isEmpty())
    386                    zhuyinDictionary = QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/tcime/dict_zhuyin.dat";
    387                d->zhuyinDictionary.load(zhuyinDictionary);
    388            }
    389            d->wordDictionary = &d->zhuyinDictionary;
    390        }
    

    Line 386 :
    It used QLibraryInfo, the datapath equals prefix path .

    I am not expert in QT, but in this case it is not related by qt path on my platform,
    I thought the path should be "$QT_ROOT/prefix".
    But actually , it used "/prefix" as absolute path.
    So I have to move the dictionary file to "/prefix/qtvirtualkeyboard/tcime/dict_zhuyin.dat"
    instead of "&QT_ROOT/prefix/qtvirtualkeyboard/tcime/dict_zhuyin.dat"

    that's why Japanese work fine, because it implemented without external dictionary.

    Is this a bug ? Or just my misunderstanding of QT.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    What is the code for the working dictionary ?



  • @sgaist
    I changed enum QLibraryInfo::LibraryLocationtype.
    from QLibraryInfo::DataPath to QLibraryInfo::PluginsPath ,
    also moved qtvirtualkeyboard folder from / to QT_PLUGIN_PATH/ .

    382        if (inputMode == InputEngine::Zhuyin) {
    383            if (d->zhuyinDictionary.isEmpty()) {
    384                QString zhuyinDictionary(qEnvironmentVariable("QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARY"));
    385                if (zhuyinDictionary.isEmpty())
    386                    zhuyinDictionary = QLibraryInfo::location(QLibraryInfo::PluginsPath) + "/qtvirtualkeyboard/tcime/dict_zhuyin.dat";
    387                d->zhuyinDictionary.load(zhuyinDictionary);
    388            }
    389            d->wordDictionary = &d->zhuyinDictionary;
    390        }
    

    I checked this:
    Qt Virtual Keyboard Deployment Guide

    It said:

    For example, for Qt libraries built from source, it could be qtbase/qtvirtualkeyboard/tcime/dict_zhuyin.dat.
    

    It was,but for embeded system, we won't provide QTBASE envirement variable, made this is not really portable ,
    but we'll set QT_PLUGIN_PATH, that's why I made the change;


    And this,
    enum QLibraryInfo::LibraryLocation
    says,

    QLibraryInfo::DataPath	:The location of general `architecture-independent` Qt data.
    

    Truely cause me misunderstanding. I don't know this is meaning absolute or portable.


  • Lifetime Qt Champion

    Thanks for the info


Log in to reply