powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt QCompleter не работает с inputMask
8 сообщений из 8, страница 1 из 1
Qt QCompleter не работает с inputMask
    #38573000
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня.

Помогите пожалуйста решить проблему.
Исполюзую QCompleter совместно с QLineEdit. Если задаю маску на QLineEdit, то QCompleter перестает работать, т.е. не появляется popup окно.

Код: plaintext
1.
2.
3.
4.
5.
6.
_completer = new QCompleter(this);
_completer->setCaseSensitivity(Qt::CaseInsensitive);
_completer->setModel(new QSqlQueryModel(this));
_completer->setCompletionColumn(0);

ui->editFindCode->setCompleter(_completer);



В слоте на textEdited:
Код: plaintext
1.
2.
3.
4.
QString sql = QString("SELECT (substring(%1,1,2) || ' ' || substring(%1,3,2) || ' ' || substring(%1,5,4) || ' ' || substring(%1,9,1)) AS str FROM my_table WHERE %1 ILIKE UPPER('%2%') ORDER BY %1").arg("code").arg(text);

QSqlQueryModel *model = static_cast<QSqlQueryModel *>(_completer->model());
model->setQuery(sql);



Сам запрос выводит строки типа:
А1 11 0000 А
РП 00 12345 Б

Если ставлю маску на ввод в QLineEdit
Код: plaintext
1.
ui->editFindCode->setInputMask("XX XX XXXX X");



То popup окно не появляется.
Мне нужно поставить маску на ввод.
Как такое решить?
...
Рейтинг: 0 / 0
Qt QCompleter не работает с inputMask
    #38573379
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что никаких вариантов?
...
Рейтинг: 0 / 0
Qt QCompleter не работает с inputMask
    #38573420
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korbanz,

похоже, что данные которые получаются из qcompleter-a не удовлетворяют маске ввода, судя по документации

Код: plaintext
1.
2.
3.
4.
5.
6.
void QLineEdit::setCompleter ( QCompleter * c )
Sets this line edit to provide auto completions from the completer, c. The completion mode is set using QCompleter::setCompletionMode().
To use a QCompleter with a QValidator or  QLineEdit::inputMask , you need to ensure that the model provided to  QCompleter contains valid entries . You can use the QSortFilterProxyModel to ensure that the QCompleter's model contains only valid entries.
If c == 0, setCompleter() removes the current completer, effectively disabling auto completion.
This function was introduced in Qt 4.2.

...
Рейтинг: 0 / 0
Qt QCompleter не работает с inputMask
    #38573445
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это я читал.
Если маску не устанавливать, то в popup окне появляются данные и по внешнему виду они как раз выглядят как "XX XX XXXX X".
Т.е. полностью совпадают с маской, которую хочу установить.
В google нашел только это
...
Рейтинг: 0 / 0
Qt QCompleter не работает с inputMask
    #38573446
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Qt QCompleter не работает с inputMask
    #38573462
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korbanz,

я набросал тест, работает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    QStringList wordList;
    wordList << "10 12" << "22 33" << "55 66" << "77 88";
    QCompleter *completer = new QCompleter(wordList, this);
    completer->setCompletionMode(QCompleter::PopupCompletion);
//    completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
    completer->setModelSorting(QCompleter::UnsortedModel);
    ui->lineEdit->setCompleter(completer);
    ui->lineEdit->setInputMask("XX XX");



правда в режиме PopupCompletion надо набрать две цифры, чтобы попап появился
...
Рейтинг: 0 / 0
Qt QCompleter не работает с inputMask
    #38573481
Korbanz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в качестве источника QSqlQueryModel. Может быть из-за этого проблема.
Когда выставлено QCompleter::UnfilteredPopupCompletion, то работает, но мне не нравится что попап висит даже когда lineedit пустой, т.е. когда удаляешь все символы.
А вот с QCompleter::PopupCompletion так и не хочет дружить
...
Рейтинг: 0 / 0
Qt QCompleter не работает с inputMask
    #38573592
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KorbanzУ меня в качестве источника QSqlQueryModel.а перегнать из Query в QStringList что мешает?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt QCompleter не работает с inputMask
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]