I’m trying to use a qml-grid view in my code. I’m trying to couple it with my C++ code.
I’ve dynamically created a list view model and passed across the qml file. It works fine.
However, I’m facing trouble when I want to connect a Qml signal to Qt/c++ code. I’ve handled mouseArea in my Qml-rectangle and emitting a signal from there.
I’m trying to connect to the signal as follows:
QDeclarativeView *pQMLContainer = NULL;
TempWidget *pTemp = new TempWidget();
pQMLContainer = new QDeclarativeView(pTemp);
pQMLContainer->setResizeMode(QDeclarativeView::SizeRootObjectToView);
pQMLContainer->rootContext()->setContextProperty("imgModel", createModel() );
pQMLContainer->setSource(QUrl("../Temp/qml/gridview-example.qml"));
QObject *rootObject = dynamic_cast<QObject*>pQMLContainer->rootObject();
QObject::connect(rootObject, SIGNAL(keyPressed()), pTemp, SLOT(onKeyPressed()));
When the connect statement runs, I get an error: cannot connect to “null” object.
On debugging, I found I could never get “rootObject” as a valid pointer.
Where am I going wrong?
Thanks
I could finally get this working. I’m not sure if this is the real solution to the problem, but finally this got it working:
I was setting the qml path as a relative path to my working folder. And yes the path was indeed correct, as I could see the qml and its contents. I just happened to change the qml path from relative to the working folder to relative to “qrc” as:
and it started working. I’m not sure if I had to add the qml to the qrc (I’ve just started using qml).
Thanks everyone for your support!
Mots