[EQL5] Making a model available for a ListView in QML

Erik Winkels aerique at xs4all.nl
Wed Dec 16 10:04:23 UTC 2020


tl;dr:How can I use a list of strings defined in ECL as a ListView model 
in QML in Qt 5.6?

===

So I'm really not familiar with Qt, but since it is the GUI toolkit for 
Sailfish phones I have to use it.

I'm trying to make a list of strings in ECL available as model to a 
ListView which has been defined in QML.  I've been looking at examples, 
specifically this one: 
https://gitlab.com/eql/EQL5/-/blob/master/examples/M-modules/quick/item-model/list-model.lisp 
but I cannot use it directly because of some constraints in my 
environment and I also cannot wrap my head about  how to solve it.

This is the ListView in QML:

     SilicaListView {
         anchors.fill: parent
         //model: ListModel { id: listModel }
         model: 100

         header: PageHeader { title: "Messages" }

         delegate: BackgroundItem {
             id: delegate

             Label {
                 text: "Item " + index
             }

             onClicked: console.log("Clicked " + index)
         }

         ...

And this is what I have in Lisp so far:

     ;;; Model
     ;;;
     ;;; 
https://gitlab.com/eql/EQL5/-/blob/master/examples/M-modules/quick/item-model/list-model.lisp

     (defun set-my-model ()
       (qlet ((data (qvariant-from-value *pushover-messages*
                                                 "QStringList")))
         (|setContextProperty| (|rootContext| qml:*quick-view*) "myModel"
              data)))

Taken straight from the example.  However, I'm not sure what to do with 
the `qml:*quick-view*`

The problem is my constraints:

- I cannot start Qt from Lisp like in the example.  There's a C++ 
initializer which start s up all the Sailfish OS stuff and EQL.  So far 
I'm doing `Lisp.call`s from QML which works well enough.  (Also see 
Renaud's template which I based all this on: 
https://redmine.casenave.fr/projects/eql5-sfos/repository/44/revisions/master/entry/src/eql5-sfos.cc 
)

- Sailfish OS only supports Qt 5.6

Thanks,
Erik



More information about the ecl-devel mailing list