;;; string-list model (qrequire :quick) (require :qml-lisp "qml-lisp") (require :properties "properties") (use-package :qml) (defvar *items* (loop :for i :from 1 :to 5 :collect (format nil "Item ~D" i))) ;; list model (defun set-my-model () ;; this function needs to be called after every change to *items* (qlet ((data (qvariant-from-value *items* "QStringList"))) (|setContextProperty| (|rootContext| qml:*quick-view*) "myModel" data))) ; see 'myModel' in QML (defun change-items (items) (setf *items* items) (set-my-model)) (defun run () (setf qml:*quick-view* (qnew "QQuickView")) (set-my-model) ; add before setting the QML source file (x:do-with qml:*quick-view* (|setSource| (|fromLocalFile.QUrl| "qml/list-model.qml")) (|setResizeMode| |QQuickView.SizeRootObjectToView|) (|show|))) (run)