Применение максимальной длины к QLineEdit - PullRequest
0 голосов
/ 11 декабря 2018

ALL,

В здесь Я получил предложение переопределить keyPressEvent, чтобы дать уведомление о предельном максимальном размере для QLineEdit.

Однако я считаю,это не будет работать, если я попытаюсь вставить текст с клавиатуры, используя Ctrl + V или контекстное меню.

Каков наилучший способ сделать это в этом случае?

Еще одинвремя: я ищу способ уведомить пользователя о максимальной длине.

TIA !!

1 Ответ

0 голосов
/ 12 декабря 2018

До 5.12:

Обрабатывать сигнал textChanged QLineEdit.

connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(lineEditTextCahnged(const QString&)));

Теперь в слоте ищите текст буфера обмена.Если оба одинаковы, то это своего рода действие вставки.Затем подтвердите свою длину.Ниже приведен псевдокод Soem.

void yourclass::lineEditTextCahnged(const QString& text)
{

        QClipboard *pBoard = QApplication::clipboard();
        QString clipStr = pBoard->text();

        if (clipStr == text)
        {

           //THEN IT IS SOME PASTE ACTION.
           //HANDLE YOUR LENGTH VALIDATION.

        }
}

Версия 5.12:

Ручка void QLineEdit::inputRejected() сигнал

В документации указано

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

http://doc.qt.io/qt-5/qlineedit.html#inputRejected

...