Александр Панюшкин
Александр ПанюшкинҚыр. 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, 12: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 все работает, но как создаю релиз и переношу его на другой комп, то виртуальная клавитура не появляется. Спасибо за ответ

                          Пікірлер

                          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                          Кіріңіз немесе Тіркеліңіз
                          Г

                          C++ - Тест 001. Первая программа и типы данных

                          • Нәтиже:66ұпай,
                          • Бағалау ұпайлары-1
                          t

                          C++ - Тест 001. Первая программа и типы данных

                          • Нәтиже:33ұпай,
                          • Бағалау ұпайлары-10
                          t

                          Qt - Тест 001. Сигналы и слоты

                          • Нәтиже:52ұпай,
                          • Бағалау ұпайлары-4
                          Соңғы пікірлер
                          G
                          GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
                          Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
                          d
                          dblas5Шілде 5, 2024, 11:02 Т.Ж.
                          QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                          k
                          kmssrАқп. 8, 2024, 6:43 Т.Қ.
                          Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                          АК
                          Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
                          Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                          Енді форумда талқылаңыз
                          Evgenii Legotckoi
                          Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
                          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                          F
                          FynjyШілде 22, 2024, 4:15 Т.Ж.
                          при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
                          BlinCT
                          BlinCTМаусым 25, 2024, 1 Т.Ж.
                          Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
                          BlinCT
                          BlinCTМамыр 5, 2024, 5:46 Т.Ж.
                          Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
                          Evgenii Legotckoi
                          Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
                          Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

                          Бізді әлеуметтік желілерде бақылаңыз