Используемый вами конструктор QCompleter
принимает QStringList
в качестве параметра.Это, конечно (хотя это не задокументировано должным образом), удобный конструктор, который создает QStringListModel
, заполненный строками, передаваемыми в конструктор, и устанавливает эту модель в качестве модели завершения с QCompleter::setModel()
.
. Вы можетеОбновите список строк, представленный моделью, используя следующий код:
QStringList originalStringList;
originalStringList << "red" <<"orange" << "yellow";
QCompleter *completer = new QCompleter(originalStringList);
QStringListModel *stringListModel = qobject_cast< QStringListModel* >(completer->model());
QStringList newStringList;
newStringList << "blue" <<"green" << "purple";
stringListModel->setStringList(wewStringList);
Если вы хотите быть уверенным в том, что делаете, я предлагаю создать завершитель и модель данных отдельно:
QCompleter *completer = new QCompleter();
QStringListModel *stringListModel = new QStringListModel();
completer->setModel(stringListModel);
QStringList originalStringList;
originalStringList << "red" <<"orange" << "yellow";
stringListModel->setStringList(originalStringList);
В этом случае вам просто нужно сохранить stringListModel в качестве члена вашего главного окна и обновлять список строк каждый раз, когда вы проходите через метод MainWindow::slotResults()
.