[SailfishDevel] QML C++ Integration not working in Sailfish
christopher.lamb at thurweb.ch
christopher.lamb at thurweb.ch
Wed Feb 26 12:31:11 UTC 2014
Hi Antonio
This works for me:
//Start BloomfiltersDemo.cpp
#ifdef QT_QML_DEBUG
#include <QtQuick>
#endif
#include <sailfishapp.h>
#include "bloomfilters.h"
int main(int argc, char *argv[])
{
QGuiApplication *app = SailfishApp::application(argc, argv);
QQuickView *view = SailfishApp::createView();
Bloomfilters * bloomfilters = new Bloomfilters();
view->rootContext()->setContextProperty("bloomfiltersdata", bloomfilters);
view->setSource(SailfishApp::pathTo("qml/BloomFiltersDemo.qml"));
view->showFullScreen();
return app->exec();
}
//End BloomfiltersDemo.cpp
//start bloomfilters.h
#ifndef BLOOMFILTERS_H
#define BLOOMFILTERS_H
#include <QObject>
#include <QDebug>
//#include "svn/bloom-read-only/bloom_filter.hpp"
class Bloomfilters : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void generateFilterInvokable2() const ;
explicit Bloomfilters(QObject *parent = 0);
void generateFilter() ;
private:
QString _k;
};
#endif // BLOOMFILTERS_H
//end bloomfilters.h
//start bloomfilters.cpp
#include "bloomfilters.h"
Bloomfilters::Bloomfilters(QObject *parent) :
QObject(parent)
{
}
void Bloomfilters::generateFilterInvokable2() const {
qDebug() << "Blooming Magic";
}
//end bloomfilters.cpp
//start FirstPage.qml
import QtQuick 2.0
import Sailfish.Silica 1.0
Page {
id: page
Component.onCompleted: {
bloomfiltersdata.generateFilterInvokable2()
}
}
//end FirstPage.qm
HtH
Chris
Zitat von antonio.cano.gomez at ovi.com:
> Hi Andrey,
>
> The output is: ReferenceError: bloomfilterdata is not defined
>
> I am calling it from a .js
>
> Some idea about how can I make that this is also defined there.
>
> Thanks!
>
>
>
>
>
> El Miércoles 26 de febrero de 2014 12:18, Andrey Kozhevnikov
> <coderusinbox at gmail.com> escribió:
>
> start app in terminal and show output please
>>
>>
>> On 26.02.2014 17:15, antonio.cano.gomez at ovi.com wrote:
>>
>> Hi Thomas,
>>>
>>> I did both modification but the code does not work yet.
>>>
>>> Here is the new code:
>>>
>>> QGuiApplication *app = SailfishApp::application(argc,
> argv);
>>> QQuickView *view = SailfishApp::createView();
>>>
>>> Bloomfilters * bloomfilters = new Bloomfilters();
>>>
> view->rootContext()->setContextProperty("bloomfiltersdata",
> bloomfilters);
>>>
> view->setSource(SailfishApp::pathTo("qml/bloomfilter.qml"));
>>> view->showFullScreen();
>>>
>>> return app->exec();
>>>
>>>
>>> El Miércoles 26 de febrero de 2014 12:01, Thomas Perl
>>> <th.perl at gmail.com> escribió:
>>>
>>> On 2014-02-26 11:48, antonio.cano.gomez at ovi.com wrote:
>>>>
>>>>> I tried this:
>>>>>
>>>>> QGuiApplication *app =
> SailfishApp::application(argc, argv);
>>>>> QQuickView *view =
> SailfishApp::createView();
>>>>> Bloomfilters * bloomfilters = new
> Bloomfilters();
>>>>>
>
> view->setSource(SailfishApp::pathTo("qml/bloomfilter.qml"));
>>>>> view->showFullScreen();
>>>>>
> view->rootContext()->setContextProperty("Bloomfilters",
> bloomfilters);
>>>>> return app->exec();
>>>>>
>>>>> But it is not working yet.
>>>>
>>>> Two things:
>>>>
>>>> 1. Call setContextProperty() right before before
> setSource(), so it's
>>>> already available when the QML content is loaded.
>>>> 2. Use lowercase for context property names
> ("bloomfilters" instead of
>>>> "Bloomfilters"). In some places, QML interprets IDs
> starting with an
>>>> upper case letter as a type name, and that won't work
> then, therefore
>>>> stick to lowercase.
>>>>
>>>>
>>>> HTH :)
>>>> Thomas
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
> SailfishOS.org Devel mailing list
>>
>>
>> _______________________________________________
>> SailfishOS.org Devel mailing list
>>
>>
More information about the Devel
mailing list