Виталий Антипов
Dec. 30, 2017, 1:56 p.m.

Смена раскладки клавиатуры

Здравствуйте! Подскажите, как при фокусе на TextField добиться смены раскладки клавиатуры на Английскую(США)? Или какие есть варианты написания в текстовом поле всегда на английском? ОС Windows.

3

Do you like it? Share on social networks!

4
BlinCT
  • Dec. 30, 2017, 3:42 p.m.

Добрый день.
Уточните пожалуйста, что значит при фокусе смену делать? И с какого языка вы хотите менять? Правильно понимаю, что при наличии, например, русского языка в системе, вы хотите, чтобы ввод всегда был на английском, вне зависимости от выбранного языка в системе?

    Виталий Антипов
    • Dec. 30, 2017, 3:50 p.m.

    В момент активации поля щелчком мыши или переходом на него табом. Да, правильно понимаете. Это поле будет для поискового запроса к базе, где искомые элементы могут содержать только английские буквы и цифры. Смена с русского (если таковой выбран в данный момент) на английский.

      Evgenii Legotckoi
      • Dec. 30, 2017, 8:31 p.m.
      • The answer was marked as a solution.

      Полагаю, что здесь нужно использовать функционал WinAPI, поскольку Qt по изменению текущей раскладки не предлагает.

      В WinAPI нужно использовать функцию LoadKeyboardLayout , как я понял из документации, нужно знать идентификаторы интересующих языков .
      Что касается фокуса, то здесь нужно наследовать TextField и переопределять методы
      void focusInEvent(QFocusEvent *event);
      void focusOutEvent(QFocusEvent *event);
      Как только получаете фокусировку через метод focusInEvent, то можете получить текущую локаль клавиатуры через метод

      GetKeyboardLayoutName , сохранить её, чтобы можно было восстановить раскладку при смене фокуса на другой виджет, и установить необходимую локаль для поля вода.

      Когда фокус будет потерян, Вы получите событие focusOutEvent, в котором можно будет восстановить локаль.

        Виталий Антипов
        • Dec. 30, 2017, 9:06 p.m.

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

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          • Last comments
          • AK
            April 1, 2025, 11:41 a.m.
            Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
          • Evgenii Legotckoi
            March 9, 2025, 9:02 p.m.
            К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
          • VP
            March 9, 2025, 4:14 p.m.
            Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
          • ИМ
            Nov. 22, 2024, 9:51 p.m.
            Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          • Evgenii Legotckoi
            Oct. 31, 2024, 11:37 p.m.
            Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup