penso che sarebbe meglio se controlli questo tutorial:
http://doc.qt.io/qt-4.8/qtbinding.html
soprattutto questa sezione:
http://doc.qt.io/qt-4.8/qtbinding.html#receiving-signals
penso che l'errore in questo caso potrebbe essere o che non ha dichiarato come uno slot o non hai fatto è invocabile. Entrambe le opzioni sono spiegate nel tutorial di Qt.
Inoltre, è necessario utilizzare un QVariant per scambiare dati tra C++ e QML. Puoi anche registrare tipi, ad es. Widget e materiale, in modo che tu possa usarli in QML come un tipo "nativo" come un rettangolo. Nella maggior parte dei casi questo non è raccomandato, tranne se hai bisogno di alcune certe classi esterne o di alcuni dati che non puoi visualizzare diversamente nell'interfaccia QML.
Il motivo per QVariant è l'approccio basato su Script di QML. QVariant contiene fondamentalmente i tuoi dati e una descrizione del tipo di dati, in modo che il QML sappia come gestirlo correttamente. Ecco perché devi specificare il parametro in QML con String, int ecc. Ma lo scambio di dati originale con C++ rimane un QVariant
Ho già usato il qmlRegisterType, ma è una soluzione molto scomoda per tipi di dati semplici. È piuttosto utilizzato per dati più complessi, come widget personalizzati, elementi Canvas o Video che QML non supporta o estende in modo originale QStandardItemModels
. È un modo più conveniente per scambiare dati tra QML e C++ e non necessita di segnali o slot in prima istanza, perché QStandardItemModel aggiorna automaticamente la GUI. Per utilizzare QStandardItemModel è necessario registrare il Tipo con qmlRegisterType ... Il modello può quindi essere utilizzato in viste basate su modelli come ListView ecc.
Ho allegato un tutorial per questo argomento, descrive come utilizzare QListModel.
http://doc.qt.io/qt-4.8/qdeclarativemodels.html
Non hai argomenti QString nel tuo updateViewWithItem? (Quale l'errore indica) – Bart
Mi dispiace, ho dimenticato di aggiungerlo di nuovo dopo il test. Ancora non funziona però. Ho provato updateViewWithItem (QString) e updateViewWithItem (stringa). – alex
segnale da C++ significa una libreria C++ o una classe Qt ??? – UmNyobe