Хочу чтобы у QComboBox была подсказка QCompleter с моделью QAbstractTableModel. Для этого делаю так в конструкторе диалога:
QCompleter *completer = new QCompleter(this);
m_ModelDriverAutocomplete = new ModelUserDriverAutocomplete(completer);
completer->setModel(m_ModelDriverAutocomplete);
completer->setWidget(ui->comboDriver);
completer->setCompletionMode(QCompleter::PopupCompletion);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel);
ui->comboDriver->setCompleter(completer);
Класс модели наследуемой от QAbstractTableModel:
ModelUserDriverAutocomplete::ModelUserDriverAutocomplete(QObject *parent) :
ModelAbstract(parent)
{
}
int ModelUserDriverAutocomplete::rowCount(const QModelIndex &parent) const
{
return 2;
}
int ModelUserDriverAutocomplete::columnCount(const QModelIndex &parent) const
{
return 1;
}
QVariant ModelUserDriverAutocomplete::data(const QModelIndex &index, int role) const
{
qDebug() << "data" << index << role << index.row();
if (index.row() == 0) {
return QString("abc");
} else if (index.row() == 1){
return QString("acd");
}
return QVariant();
}
Открываю форму. В combobox ввожу "a". Появляется маленькая полосочка под combobox высотой в 3-4 пикселя. Главное эта полоска реагирует на ESC или на ALT+F4, но никаких надписей от QCompleter нет. Помогите пожалуйсто, почему не работает с QAbstractTableModel
PS: Если ввожу правильно, скажем "ab" то полоска есть. Но стоит ошибиться, скажем "abp" то она исчезает. ПО ощущениям это и есть QCompleter, только он высотой в 4 пикселя почемуто.