2015-11-09 3 views
2

Я новичок в QML и Qt Quick, всего лишь 5 дней назад, что я узнал о них.
Я хотел иметь RegExpValidator для TextInput разделенных запятыми слов, общая длина входной строки разрешена с 1-2500.QML RegExpValidator максимальная длина строки для проверки

import QtQuick 2.2 

Rectangle { 
    width : 100 
    height : 50 

    Text { 
     id : label 
     text: "Enter words" 
    } 

    TextInput { 
     anchors { 
      topMargin : 5 
      top : label.bottom 
     } 
     focus: true 
     validator: RegExpValidator { regExp: /[a-zA-Z,]{1,2500}/ } 
    } 
} 

- это мой файл RegExpValidator_example.qml, который не принимает никаких данных.
Методом проб и ошибок я выяснил, что верхний предел для длины РегВыр 1024
что,

validator: RegExpValidator { regExp: /[a-zA-Z,]{1,1024}/ } 

работает, но

validator: RegExpValidator { regExp: /[a-zA-Z,]{1,1025}/ } 

нет. Так что я нашел еще один способ:

maximumLength: 2500 
validator : RegExpValidator { regExp : /[a-zA-Z,]{1,}/ } 

Я попытался найти в документацию QML для упоминания верхнего предела, но безрезультатно. Неужели я действительно не искал, или это ошибка?

ответ

2

Я пошел по документации RegExpValidator, а также из QRegExp, то есть его эквивалент C++, другими словами, класс, созданный под капотом.

Как вы сказали, нет понятия предела.

Любопытный, я пошел посмотреть source code, и я обнаружил, что на самом деле предел существует. Он установлен в InftyRep и используется here (конечно, если мне было достаточно, чтобы понять, что происходит в этом файле). Любопытно, что InftyRep на самом деле установлен в 1025 here и используется в коде, указанном в чекле с номером <. Это также подтвердит ваше предположение, что максимальная принятая длина равна 1024.

Сказанное, я сильно подозреваю, что вы правы, поскольку предел действительно существует, но он не документирован надлежащим образом.

Примечание: Код, указанный выше и связанный, относится к Qt 5.5, и вы можете рассмотреть возможность открытия проблемы на bugtracker.

+0

Благодарим за обращение к исходному коду. Я сообщил об этой проблеме в Qt Bug Tracker: https://bugreports.qt.io/browse/QTBUG-49319 – abcoep

+0

Ну, я открыл вопрос с просьбой документировать лимит, а не изменять его. :-) – skypjack

+0

Он может проверять строки длиной более 1024. Так зачем же ограничивать? – abcoep

Смежные вопросы