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

                          Пікірлер

                          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                          Кіріңіз немесе Тіркеліңіз
                          OI
                          • Ora Iro
                          • Жел. 24, 2024, 6:38 Т.Ж.

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

                          • Нәтиже:40ұпай,
                          • Бағалау ұпайлары-8
                          AD

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

                          • Нәтиже:50ұпай,
                          • Бағалау ұпайлары-4
                          m
                          • molni99
                          • Қаз. 26, 2024, 1:37 Т.Ж.

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

                          • Нәтиже:80ұпай,
                          • Бағалау ұпайлары4
                          Соңғы пікірлер
                          ИМ
                          Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
                          Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                          Evgenii Legotckoi
                          Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
                          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                          A
                          ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
                          Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                          ИМ
                          Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
                          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                          d
                          dblas5Шілде 5, 2024, 11:02 Т.Ж.
                          QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                          Енді форумда талқылаңыз
                          Evgenii Legotckoi
                          Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
                          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
                          t
                          tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
                          google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
                          NSProject
                          NSProjectМаусым 4, 2022, 3:49 Т.Ж.
                          Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
                          9
                          9AnonimҚаз. 25, 2024, 9:10 Т.Ж.
                          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

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