Александр Панюшкин
Александр Панюшкин24 сентября 2017 г. 5: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
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

12
BlinCT
  • 24 сентября 2017 г. 8:10
  • (ред.)

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

    BlinCT
    • 24 сентября 2017 г. 8:13

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

      Александр Панюшкин
      • 24 сентября 2017 г. 8:33

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

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

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

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

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

          Александр Панюшкин
          • 24 сентября 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 сентября 2017 г. 6:58

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

              Александр Панюшкин
              • 27 сентября 2017 г. 0:09

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

              Ну, и временное решение я нашёл (вдруг кому понадобится). :)
              Если из исходников взять ресурсный файл layouts и папку с языками и подложить в свой проект (не забыть привязать к проекту :) ), тогда появляются указанные в ресурсном файле языки. Т.е., по сути, таким образом мы указываем в принудительном порядке какие языки использовать.
              Хотя, разумеется, это костыль.
                Александр Панюшкин
                • 28 ноября 2017 г. 3:02
                • Ответ был помечен как решение.

                Вопрос решился. Подробности здесь - 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.

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

                    Александр Панюшкин
                    • 28 ноября 2017 г. 3:19

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

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

                        r
                        • 25 августа 2021 г. 9:21

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

                          Комментарии

                          Только авторизованные пользователи могут публиковать комментарии.
                          Пожалуйста, авторизуйтесь или зарегистрируйтесь
                          AD

                          C++ - Тест 004. Указатели, Массивы и Циклы

                          • Результат:50баллов,
                          • Очки рейтинга-4
                          m
                          • molni99
                          • 26 октября 2024 г. 7:37

                          C++ - Тест 004. Указатели, Массивы и Циклы

                          • Результат:80баллов,
                          • Очки рейтинга4
                          m
                          • molni99
                          • 26 октября 2024 г. 7:29

                          C++ - Тест 004. Указатели, Массивы и Циклы

                          • Результат:20баллов,
                          • Очки рейтинга-10
                          Последние комментарии
                          ИМ
                          Игорь Максимов22 ноября 2024 г. 17:51
                          Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                          Evgenii Legotckoi
                          Evgenii Legotckoi31 октября 2024 г. 19:37
                          Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                          A
                          ALO1ZE19 октября 2024 г. 14:19
                          Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                          ИМ
                          Игорь Максимов5 октября 2024 г. 13:51
                          Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                          d
                          dblas55 июля 2024 г. 17:02
                          QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                          Сейчас обсуждают на форуме
                          m
                          moogo22 ноября 2024 г. 13:17
                          Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
                          Evgenii Legotckoi
                          Evgenii Legotckoi24 июня 2024 г. 21:11
                          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                          t
                          tonypeachey115 ноября 2024 г. 12:04
                          google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                          NSProject
                          NSProject4 июня 2022 г. 9:49
                          Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

                          Следите за нами в социальных сетях