Название: QCompleter и QAbstractTableModel не работают. Отправлено: nickla от Апрель 24, 2012, 22:37 Хочу чтобы у QComboBox была подсказка QCompleter с моделью QAbstractTableModel. Для этого делаю так в конструкторе диалога:
Код: QCompleter *completer = new QCompleter(this); Класс модели наследуемой от QAbstractTableModel: Код: ModelUserDriverAutocomplete::ModelUserDriverAutocomplete(QObject *parent) : Открываю форму. В combobox ввожу "a". Появляется маленькая полосочка под combobox высотой в 3-4 пикселя. Главное эта полоска реагирует на ESC или на ALT+F4, но никаких надписей от QCompleter нет. Помогите пожалуйсто, почему не работает с QAbstractTableModel PS: Если ввожу правильно, скажем "ab" то полоска есть. Но стоит ошибиться, скажем "abp" то она исчезает. ПО ощущениям это и есть QCompleter, только он высотой в 4 пикселя почемуто. Название: Re: QCompleter и QAbstractTableModel не работают. Отправлено: nickla от Апрель 24, 2012, 22:42 Изменил стиль QCompleter:
Код: completer->setCaseSensitivity(Qt::CaseInsensitive); И о чудо! Он правильно подсказывает. Почему тогда он так ущербно себя ведет если я хочу popup? Название: Re: QCompleter и QAbstractTableModel не работают. Отправлено: nickla от Апрель 24, 2012, 23:13 Решено. Ответ в модели - она работала не верно. Для тех кто мучается с такой же проблемой или похожей смотрите хелп внимательнее. Там говориться что QCompleter поддерживает QAbstractListModel (или както так зовется). Открывайте код этой модели и смотрите внимательнее как реализованны методы data, flags. Метод columnCount должен всегда возвращать 1.
Для примера вот код моей модели после того как она начала адекватно работать с QCompleter: Код: ModelUserDriverAutocomplete::ModelUserDriverAutocomplete(QObject *parent) : Ну а прикрутить сюда свои данные никому не составит труда я думаю. У меня так вообще это сериализованный объект с сервера :) |