Witam,
aktualnie próbuję zrobić podpowiedzi w combo-boxie wraz z dynamiczną aktualizacją modelu, mój kod wygląda tak:
ComboBox{
id: searchbar
width: (parent.width-20)*0.75
wheelEnabled: true
editable: true
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: title.bottom
anchors.topMargin: 80
textRole: "name"
model: dl.data
onCurrentTextChanged: {
console.log(searchbar.currentText);
if(searchbar.find(searchbar.currentText) === -1)
{
if(searchbar.currentText.length)
{
getDb(searchbar.currentText)
}
}
else
{
console.log("Wybrany: "+model[currentIndex].name)
}
element.text = searchbar.currentText;
}
}
wiem, że problem był już kiedyś omawiany, ale uznałem, że potrzebuję pomocy.
Na początku, aby model nie był pusty wypełniam go wpisami ze słownika na literę 'a'. Kiedy próbujemy coś wpisać na 'a' ładnie podpowiada wszystkie możliwe rozwiązania, ale gdy chcę wyszukać coś na literę, np. 'b', to niestety nie następuje aktualizacja, a searchbar.currentText do logów nie zwraca ani jednej litery wpisanej w combobox'a.
Czy będę musiał 'ręcznie rzeźbić' coś podobnego do combobox'a, czy może coś jednak przeoczyłem?
Funkcja do zwracania obiektów na daną literę:
QVector<QObject *> DataLoader::getValues(QString key)
{
QVector<QObject*> result;
for(auto i = 0; i < _data.size(); i++)
{
qDebug() << qobject_cast<Garbage*>(_data[i])->name().at(0);
if(qobject_cast<Garbage*>(_data[i])->name().at(0) == key.at(0))
{
result.append(_data[i]);
}
else
{
break;
}
}
return result;
}
alagnercopy_if
nie dałoby tu rady zamiast na piechotę to robić?