Михаиллл
Aug. 20, 2019, 1:58 a.m.

Как в QML в TextField вводить только цифры

TextField

Добрый день.
Как в QML в TextField сделать возможность ввода только цифр?

3

Do you like it? Share on social networks!

11
Pavel K.
  • Aug. 20, 2019, 1:11 p.m.
TextField {
    id: digits

    width: parent.width 
    height: parent.height  
    placeholderText: qsTr("Input number") 
    inputMethodHints: Qt.ImhDigitsOnly
}

Подробнее тут

    Михаиллл
    • Aug. 20, 2019, 5:39 p.m.

    Это не помогло, буквы и пробелы все ровно вводятся

      Evgenii Legotckoi
      • Aug. 20, 2019, 5:41 p.m.
      • (edited)

      Можно добавить валидатор. Вот например таким образом.

      import QtQuick 2.2
      import QtQuick.Controls 1.2
      
      TextField {
          validator: IntValidator {bottom: 11; top: 31;}
          focus: true
      }
      
        Михаиллл
        • Aug. 20, 2019, 5:42 p.m.

        Так работает

        validator: IntValidator {bottom: 1; top: 100000}
        
          Evgenii Legotckoi
          • Aug. 20, 2019, 5:42 p.m.
          • The answer was marked as a solution.

          Или например валидатор с регулярным выражением.

          TextInput {
              id: hexNumber
              validator: RegExpValidator { regExp: /[0-9A-F]+/ }
          }
          
            Михаиллл
            • Aug. 20, 2019, 10:34 p.m.

            Если делаю так, то не работает, т.к. слишком большое число

            validator: IntValidator {bottom: 1; top: 99999999999}
            

            а этот вариант не работает

            validator: RegExpValidator { regExp: /[0-9A-F]+/ }
            

            Скажите пожалуйста, как сделать с большим числом?

              Evgenii Legotckoi
              • Aug. 20, 2019, 10:44 p.m.

              Ну вообще это я вам не решение вашей задачи кинул, а просто как пример... Регулярку вам надо было бы самому придумать..

              Ну вот так будет работать

              TextField {
                  validator: RegExpValidator { regExp: /[0-9]+/ }
                  focus: true
                  anchors.centerIn: parent
                  width: 200
                  maximumLength: 11
              }
              
                Михаиллл
                • Aug. 20, 2019, 11:36 p.m.

                Спасибо

                  Михаиллл
                  • Aug. 21, 2019, 12:05 a.m.

                  Но все равно вводятся все символы, но если есть буквы, то сбрасывается

                    Evgenii Legotckoi
                    • Aug. 21, 2019, 12:08 a.m.

                    идеального решения вам никто не обещал

                      Михаиллл
                      • Aug. 21, 2019, 12:10 a.m.

                      Нужно будет попробовать подставть другой тип данных, может заработае
                      validator: IntValidator {bottom: 1; top: 99999999999}

                        Comments

                        Only authorized users can post comments.
                        Please, Log in or Sign up
                        • Last comments
                        • AK
                          April 24, 2025, 12:04 p.m.
                          UPD: Переписал логику воспроизведения через стороннюю библиотеку BASS. Там выбрать можно
                        • Evgenii Legotckoi
                          April 16, 2025, 5:08 p.m.
                          Благодарю за отзыв. И вам желаю всяческих успехов!
                        • IscanderChe
                          April 12, 2025, 5:12 p.m.
                          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
                        • AK
                          April 1, 2025, 11:41 a.m.
                          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                        • Evgenii Legotckoi
                          March 9, 2025, 9:02 p.m.
                          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…