QCompleter custom model not working
-
I have to use Qcompleter with custom data one is text and other is some id.
QStringList cities; cities << "Moscow" << "London" << "Las Vegas" << "New York"<< "New York"; QStringList ids; ids << "0" << "1" << "2" << "3"<< "4"; completer_model *cModel = new completer_model(); cModel->populateData(ids,cities); QCompleter *completer1 = new QCompleter(this); ui->lineEdit->setCompleter(completer1); completer1->setModel(cModel);And I have implemented custom model like below.
completer_model::completer_model(QObject *parent) : QAbstractListModel{parent} { } int completer_model::rowCount(const QModelIndex &parent) const{ return data_list.count(); } QVariant completer_model::data(const QModelIndex &index, int role) const{ int r = index.row(); if (!index.isValid()) return QVariant(); if (role == Qt::DisplayRole) { return data_list[r].display_str; } return QVariant(); } void completer_model::populateData(QStringList display_str, QStringList ids){ for(int i=0;i<display_str.length();i++){ completer_model::beginResetModel(); algo_creation_search_box_model_struct tmp; tmp.display_str =display_str[i]; tmp.id=ids[i]; data_list.append(tmp); completer_model::endResetModel(); } }But when I type no popup shows.
-
I have to use Qcompleter with custom data one is text and other is some id.
QStringList cities; cities << "Moscow" << "London" << "Las Vegas" << "New York"<< "New York"; QStringList ids; ids << "0" << "1" << "2" << "3"<< "4"; completer_model *cModel = new completer_model(); cModel->populateData(ids,cities); QCompleter *completer1 = new QCompleter(this); ui->lineEdit->setCompleter(completer1); completer1->setModel(cModel);And I have implemented custom model like below.
completer_model::completer_model(QObject *parent) : QAbstractListModel{parent} { } int completer_model::rowCount(const QModelIndex &parent) const{ return data_list.count(); } QVariant completer_model::data(const QModelIndex &index, int role) const{ int r = index.row(); if (!index.isValid()) return QVariant(); if (role == Qt::DisplayRole) { return data_list[r].display_str; } return QVariant(); } void completer_model::populateData(QStringList display_str, QStringList ids){ for(int i=0;i<display_str.length();i++){ completer_model::beginResetModel(); algo_creation_search_box_model_struct tmp; tmp.display_str =display_str[i]; tmp.id=ids[i]; data_list.append(tmp); completer_model::endResetModel(); } }But when I type no popup shows.
-
@haris123 said in QCompleter custom model not working:
QCompleter *completer1 = new QCompleter(this);
ui->lineEdit->setCompleter(completer1);I think you need to set the model as well:
completer1->setModel(cModel);