Newby questions about QML models
Willem Ferguson
willemferguson at zoology.up.ac.za
Thu Feb 4 07:48:23 PST 2016
On 01/02/2016 20:46, Tomaz Canabrava wrote:
> I can have a class DiveComputers that is a model based on
> QAbstractListModel, since any dive can have zero or more dive
> computers, I can have the method DiveComputers *diveComputers() on the
> class Dive as a Q_PROPERTY, and I can access it in QML via:
>
> ListView {
> id: diveList
> model : diveListModel
> delegate {
> ListView {
> id: diveComputerList
> model: dive.diveComputers
> }
> }
> }
>
Tomaz,
Your email above is extremely informative. I deal with two-way
communication between the QML and C++. The above allows the QML to see a
model on the C++ side. This takes care of getting data drom the C++ to
the QML. I also use a signal emitted by the QML to update the model
within C++, something as follows:
Class DownloadManager
Q_PROPERTY(QStringListModel *vendorModel READ getVendorModel WRITE
setVendorModel NOTIFY vendorChanged)
.......
signals:
void vendorChanged(); // notification from C++ to QML
public slots:
void newVendorSlot(const QString &vendortext);// meant for incoming
signal from QML. I need to connect this to the QML.
The middle two lines above allow communication of the vendorModel to the
QML. The bottom line above allows the C++ to receive the signal from the
QML. Normally, using QtQuickView I would have connected the QML signal
to the C++ slot as follows:
QObject *dcSelectPanel = view.rootObject();
QObject::connect(dcSelectPanel,SIGNAL(vendorChangedSignal(QString)),
&DownloadManager,SLOT(newVendorSlot(QString)));
But within the present context it looks like view.rootObject() is not
easily accessible and I need an alternative way of connecting the QML
signal to the C++ slot. Any suggestions? I have spent considerable time
scanning for a discussion on this issue and cannot find any text. In
QmlManager, many slots are created but I see no connect construct. I
hope I am making sense?
Kind regards,
willem
More information about the subsurface
mailing list