Domanda

Sto cercando di presentare una domanda di dizionario QML-based. Si recupera la definizione parola tramite API RESTful XML e li visualizza in una lista. Ce l'ho a lavorare in questo modo rudimentale. Ma ora sto cercando di attuare due stati per il ListView:. Guarda la serie con le definizioni e di una "volevi dire" tipo suggerimenti lista per quando fallì la ricerca

Il mio codice corrente per la ListView è in questo modo:

ListView
{
    SuggestionModel{id:suggestionModel; currentWord : "test"}
    SuggestionDelegate{id:suggestionDelegate}
    model : XmlModel{id: standardModel; currentWord : "test"}
    delegate : ListDelegate{id:standardDelegate}
    clip : true
    anchors.top : hbox.bottom
    y : hbox.height + 3
    width : parent.width
    height : parent.height - hbox.height
        id : list
        states :
                State { name: "suggestion"; when: list.model == suggestionModel ||
                        list.model.status ==  XmlListModel.Ready && list.count == 0
                PropertyChanges {
                    target: list
                    model : suggestionModel
                    delegate : suggestionDelegate
                }
            }

        focus : true
        keyNavigationWraps : true
    }

che dà questo errore:

Unable to assign QObject* to QDeclarativeComponent*

per la dichiarazione PropertyChanges. C'è anche un ciclo vincolante ma che non è davvero un problema che non avrebbe potuto risolvere. Il mio problema è come faccio a definire gli stati. Non posso istanziare il modello e delegare all'interno della dichiarazione dello Stato o come l'interprete si lamenterà di creare un oggetto specifico dello stato.

È stato utile?

Soluzione

SuggestionDelegate viene istanziato. La struttura delegato richiede un componente che esso stesso un'istanza per ogni articolo viene visualizzato. Quindi, per fornire una componente piuttosto che un caso è necessario avvolgere il SuggestionDelegate in un componente e utilizzare l'ID componente nelle PropertyChanges:

Component {
    id: suggestionDelegate
    SuggestionDelegate { }
}

Altri suggerimenti

Anche se la soluzione di Martin risolto il problema che stavo avendo, mi si avvicinò con un design migliore per l'interfaccia utente. Poiché le definizioni e suggerimenti view sono mutuamente esclusive, ho implementato ognuno come articolo che hanno la stessa geometria e vengono visualizzate o nascoste secondo lo stato attuale. Ciò consente anche di animazioni di transizione belle.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top