Александр Панюшкин
Александр Панюшкин24. September 2017 05:06

Virtual Keyboard

QT, Virtual Keyboard

Добрый день.


Есть изумительная штука - Qt Virtual Keyboard (http://doc.qt.io/Qt-5/qtvirtualkeyboard-index.html).
Есть вполне пригодный пример в примерах QtCreator. Правда, мне нужен код на qt, а там на qml, но не суть важно - в документации всё хорошо написано и для чистого c++.
В общем, всё работает, но есть одна проблема - язык только английский (а точнее - British English).
А мне нужен ещё и русский.
Как его добавить?

CONFIG += lang_ru
CONFIG += lang_all
Это всё пробовал - не помогает.

console.log("locales available: " + VirtualKeyboardSettings.availableLocales)
Это выводит только en_GB.

Я в замешательстве. Судя по google, более ни кто с такими проблемами не сталкивался.
Пробовал и на винде, и на маке - всё одно и то же.

Очень надеюсь, что мой вопрос глупый и местные гуру мне мигом укажут пример рабочего кода. Спасибо!
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

12
BlinCT
  • 24. September 2017 08:10
  • (bearbeitet)

Приветствую.
Виртуальная клава и у меня на работе вызывала свои проблемы)
С ее работой нету проблем только в qml. То есть она как бы больше разрабатывалась не под виджеты.
Например виртуальная клава не реагирует если вы нажимаете в поле для ввода цифр или текста в виджетах, а в qml она реагирует.
Это еще один показатель того что она не приспособленна для такой графики.
Так же вот тут есть описание по поводу языков http://doc.qt.io/qt-5/technical-guide.html

    BlinCT
    • 24. September 2017 08:13

    И к дополнению, вот тут на стековерфло тоже эта тема обсуждалась https://stackoverflow.com/questions/40507390/how-to-change-qt-5-7-virtual-keyboard-layout-locale

      Александр Панюшкин
      • 24. September 2017 08:33

      Спасибо за ответ!

      И спасибо за ссылку на обсуждение этой проблемы.
      Подозреваю, что моя ошибка в какой-то мелочи, которую я уверенно повторяю на обоих платформах.
      Я пробовал добавлять фразу, которую пишут в решениях (CONFIG += lang-all или CONFIG += lang-ru_RU) в про файл, пробовал прописывать в параметры qmake - ни каких изменений.

      Возможно есть какие-то иные клавиатуры с поддержкой русского языка? Не писать же свою клавиатуру... Хотя, уже столько времени потеряно, что, мне кажется, проще свою нарисовать. :)

      Забыл написать - версия 5.9. Если это может быть важно.
        BlinCT
        • 24. September 2017 08:59

        По поводу версии ничего сказать не могу, так как мы в проекте юзаем 5.5.1
        Вот следующий проект пойдет уже на 5.9.1
        Мне кажется у вас где то ошибка или чего то не хватает. Но так сказать тяжело в чем трабла.

          Александр Панюшкин
          • 24. September 2017 10:14

          Создал конструктором QtCreator проект.

          Удалил всё лишнее (комментарии, widget.cpp, widget.h). Осталось два файла - main.cpp и untitled.pro.

          Вот их содержание:

          untitled.pro

          QT       += core gui widgets svg
          QTPLUGIN += qtvirtualkeyboardplugin
          CONFIG += lang-all
          
          TARGET = untitled
          TEMPLATE = app
          
          DEFINES += QT_DEPRECATED_WARNINGS
          
          SOURCES += \
                  main.cpp
          
          HEADERS +=

          main.cpp

          #include <QApplication>
          #include <QPlainTextEdit>
          
          int main(int argc, char *argv[])
          {
              qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
          
              QApplication a(argc, argv);
              QPlainTextEdit edit;
              edit.show();
          
              return a.exec();
          }

          Пробовал в конфиге и lang-all, и lang-ru_RU - результат один только английский.
            Evgenii Legotckoi
            • 26. September 2017 06:58

            Больше похоже на какой-то баг с клавиатурой. Перекопал разные варианты, а результат такой же. Кроме Британской раскладки ничего не работает.

              Александр Панюшкин
              • 27. September 2017 00:09

              Большое спасибо! Чуть позже напишу тогда на баг трекер - посмотрим, что там скажут.

              Ну, и временное решение я нашёл (вдруг кому понадобится). :)
              Если из исходников взять ресурсный файл layouts и папку с языками и подложить в свой проект (не забыть привязать к проекту :) ), тогда появляются указанные в ресурсном файле языки. Т.е., по сути, таким образом мы указываем в принудительном порядке какие языки использовать.
              Хотя, разумеется, это костыль.
                Александр Панюшкин
                • 28. November 2017 03:02
                • Die Antwort wurde als Lösung markiert.

                Вопрос решился. Подробности здесь - https://stackoverflow.com/questions/46390018/how-to-change-qt-5-9-virtual-keyboard-layout-locale

                Я проверил у себя - всё заработало.

                Вот ответ:

                I assume you made the same mistake as me and set CONFIG+=lang- argument in your project (the project that uses virtual keyboard). You need to set it in qtvirtualkeyboard project instead and build it (create dll files).

                qtVirtualKeyboard project settings

                Then you can use the plugin in any project you wish.

                  Да ладно... пересобрать саму виртуальную клавиатуру нужно?

                    Не знаю на сколько это правильно, но решение оказалось рабочим. В итоге клавиатура цепляется к моему проекту с нужными раскладками. :)

                      В принципе. Пересборка проекта вполне адекватное решение. У Qt есть некоторые модули, которые приходится пересобирать с нужными настройками. Во всяком случае это лучше, чем тот костыль, что Вы сделали поначалу.
                      Хотя конечно это немного странно. Не думал, что для поддержки довольно стандартных языков придётся пересобирать клавиатуру...

                        r
                        • 25. August 2021 09:21

                        а подскажите, как создать релиз с виртуальной клавиатурой? ,Дело в том, с из qtCreator все работает, но как создаю релиз и переношу его на другой комп, то виртуальная клавитура не появляется. Спасибо за ответ

                          Kommentare

                          Nur autorisierte Benutzer können Kommentare posten.
                          Bitte Anmelden oder Registrieren
                          Letzte Kommentare
                          ИМ
                          Игорь Максимов5. Oktober 2024 07:51
                          Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                          d
                          dblas55. Juli 2024 11:02
                          QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                          k
                          kmssr8. Februar 2024 18:43
                          Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                          Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                          EVA
                          EVA25. Dezember 2023 10:30
                          Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                          Jetzt im Forum diskutieren
                          J
                          JacobFib17. Oktober 2024 03:27
                          добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                          JW
                          Jhon Wick1. Oktober 2024 15:52
                          Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                          КГ
                          Кирилл Гусарев27. September 2024 09:09
                          Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                          F
                          Fynjy22. Juli 2024 04:15
                          при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                          Folgen Sie uns in sozialen Netzwerken