Hi,
I have some problems with qt remote objects with models.

First the second time I require the model, it is already initialized but doesn't work correctly.

Second, the remote access of the model through proxy doesn't seem to work correctly too.

The following code, for example, result in this:


 "Standard Remote initialized" :
 NbRows: 2
 Available roles: QVector(0, 2)
 First Element: QVariant(QString, "Item1")


 "Remote copy already initialized" :
 NbRows: 0
 Available roles: QVector(0, 2)
 First Element: QVariant(Invalid)


 "RemoteModel through proxy" :
 NbRows: 2
 Available roles: QVector()
 First Element: QVariant(Invalid)

Did i missed something?

David



#include<QCoreApplication>

#include<QStringListModel>

#include<QDebug>

#include<QtRemoteObjects/QAbstractItemModelReplica>

#include<QtRemoteObjects/QRemoteObjectRegistryHost>

voidlogModel(constQString&message,QAbstractItemModelReplica*model)

{

qDebug()<<"\n"<<message<<":\n"

<<"NbRows:"<<model->rowCount()<<"\n"

<<"Availableroles:"<<model->availableRoles()<<"\n"

<<"FirstElement:"<<model->data(model->index(0,0),Qt::DisplayRole)<<"\n";

}

intmain(intargc,char*argv[])

{

//QLoggingCategory::setFilterRules(QStringLiteral("qt.remoteobjects*=true"));

QCoreApplicationa(argc,argv);

QStringListlist({"Item1","Item2"});

QStringListModelmodel(list);

QVector<int>roles({Qt::DisplayRole,Qt::EditRole});

QRemoteObjectRegistryHostregistry(QUrl(QStringLiteral("local:registry")));

registry.enableRemoting(&model,"model",roles);

QRemoteObjectNodenodeInternal;

nodeInternal.connectToNode(QUrl(QStringLiteral("local:registry")));

QAbstractItemModelReplica*romodel1=nodeInternal.acquireModel("model",QtRemoteObjects::PrefetchData,roles);

QObject::connect(romodel1,&QAbstractItemModelReplica::initialized,romodel1,[&]()

{

logModel("StandardRemoteinitialized",romodel1);

QAbstractItemModelReplica*romodel2=nodeInternal.acquireModel("model",QtRemoteObjects::PrefetchData,roles);

if(romodel2->isInitialized())

logModel("Remotecopyalreadyinitialized",romodel2);

});

//Newhostforproxy

QRemoteObjectHosthost(QUrl("local:service"));

host.proxy(QUrl(QStringLiteral("local:registry")));

QRemoteObjectNodenodeExternal;

nodeExternal.connectToNode(QUrl("local:service"));

QAbstractItemModelReplica*romodelproxy=nodeExternal.acquireModel("model",QtRemoteObjects::PrefetchData,roles);

QObject::connect(romodelproxy,&QAbstractItemModelReplica::initialized,romodelproxy,[=]()

{

logModel("RemoteModelthroughproxy",romodelproxy);

});

returna.exec();

}



_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to