Seite 1 von 1

Suchfeld mit QLineEdit und QCompleter

Verfasst: 1. Mai 2014 15:29
von Developer
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

Re: Suchfeld mit QLineEdit und QCompleter

Verfasst: 1. Mai 2014 16:22
von veeman
Du musst hierfür ein eigenes Model implementieren, in dem du dein Suchanfrage durchführst, und referenzieren.
Die Verknüpfung zwischen dem LineEdit und dem Completer Object wird nur einmal gesetzt und jegliche Anfragen werden dann automatisch vom Completer-Object bezogen.

Re: Suchfeld mit QLineEdit und QCompleter

Verfasst: 2. Mai 2014 23:31
von Developer
Vielen Dank für die Antwort. Irgendwie simpel, aber genial :D
Hat funktioniert, danke :)