Ich habe QLineEdit Widget, das als Suchfeld dient. Bei einer Eingabe wird über das
QLineEdit::textChanged(const QString&) Signal eine Anfrage mit dem Suchtext an einen Server gestellt. Über ein Callback erhalte ich die Suchvorschläge vom Server. Daraufhin möchte ich über ein QCompleter die Vorschläge anzeigen. Irgendwie funktioniert die
setCompleter() Methode scheinbar nicht in meiner Callback Funktion.
Folgender Code skizziert grob das Problem:
Code: Alles auswählen
void AppWindow::resultCallback(const QStringList &data)
{
QCompleter *completer = new QCompleter(data, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
ui->searchfield->setCompleter(completer);
}
void AppWindow::on_searchfield_textChanged(const QString &text)
{
if (!text.isEmpty())
{
network.search(text); // Server anfragen und Ergebnis über resultCallback() mitteilen
}
}
Die Callbackfunktion wird mit einem gefüllten QStringList Objekt aufgerufen, allerdings wird kein Completer sichtbar. Wenn ich die
setCompleter() Methode in
on_searchfield_textChanged() aufrufe, dann erscheint der Completer. Wieso funktioniert das nicht mit der Callbackfunktion?
lg
Developer