0_o. I didn't know that all objects in QML are global. Thank you very much.
2013/9/30 <mrqt...@gmail.com> > Omg declare global engine object in main qml file and that's all > > 30.09.13 13:19 Николай Шатохин написал(а): > I'm using qmlRegisterType now. I have problems, because two QML objects in > different QML files it is two different objects in C++. I registered as > type class that have static object of Engine, but now I have butthurt with > it (I need retranslate all signals, getters and setters) > > > 2013/9/30 Michael Zanetti <michael.zane...@canonical.com> > >> On Monday 30 September 2013 12:05:03 Николай Шатохин wrote: >> > Can I set only one object as context property that contains other >> objects >> > (and this objects contain objects too) and get this deep objects in QML? >> > >> > For i.e. I have object of class Engine that has object of class Game, >> Game >> > contains object of Ship and Ship contains object of Reactor. So, I set >> > object of Engine as context property and in QML write: >> > >> > engine.game.ship.reactor >> > >> > Can I use it? >> >> >> Yes, given that "game" is a Q_PROPERTY() of "enigne", "ship" is a >> Q_PROPERTY() >> of "game" etc... >> >> Still, I recommend to register the type of the Engine instead of setting >> it as >> a context property. >> >> It's really just using qmlRegisterType() instead of setContextProperty(). >> It's >> not more or more complex code, but gives you better ways of structuring >> your >> QML code. >> >> > >> > >> > 2013/9/30 Николай Шатохин <n.shatok...@gmail.com> >> > >> > > I've already found this solution: >> > > >> http://qt-project.org/doc/qt-5.0/qtqml/qtqml-cppintegration-contextpropert >> > > ies.html It helps. Thanks. >> > > >> > > >> > > 2013/9/30 Michael Zanetti <michael.zane...@canonical.com> >> > > >> > >> On Sunday 29 September 2013 13:45:01 Vladimir M. wrote: >> > >> > Sounds like a "context property" use case (you plain set a QObject >> as a >> > >> > context property for a view's root scope, w/o even registering the >> > >> >> > >> object's >> > >> >> > >> > type, and all its properties and invokables become available). >> > >> >> > >> I don't recommend using context properties. While they are useful for >> > >> some >> > >> cases, this one doesn't seem to be one of those. Using too many >> global >> > >> context >> > >> properties can make the code very ugly to work with. >> > >> >> > >> You probably want to create something like this: >> > >> >> > >> class ViewController: public QObject >> > >> { >> > >> >> > >> Q_PROPERTY(QList<MyClass> viewObjects READ viewObjects NOTIFY >> > >> >> > >> viewObjectsChanged) >> > >> ... >> > >> QList<MyClass> viewObjects() const { >> > >> >> > >> return objectList; >> > >> >> > >> } >> > >> ... >> > >> }; >> > >> >> > >> qmlRegisterType<ViewController>(uri, 0, 1, "ViewController"); >> > >> >> > >> Then in QML you can do something like this: >> > >> >> > >> ViewController { >> > >> >> > >> id: viewController >> > >> >> > >> } >> > >> >> > >> Repeater { >> > >> >> > >> model: viewController.viewObjects >> > >> MyView { >> > >> >> > >> property var viewObject: viewController.viewObjects[index] >> > >> >> > >> } >> > >> >> > >> } >> > >> >> > >> >> > >> Note that if you want your code to adjust more flexible (i.e. the >> > >> viewObjects >> > >> change a lot), consider using a QAbstractListModel (or some other >> model) >> > >> instead of a QList. >> > >> >> > >> Hope this helps, >> > >> Michael >> > >> >> > >> > On Sun, Sep 29, 2013 at 6:38 AM, Николай Шатохин >> > >> >> > >> <n.shatok...@gmail.com>wrote: >> > >> > > Hello. >> > >> > > >> > >> > > When I create a class in C++, I can register it for QML and can >> > >> > > create >> > >> > > view for it. It's very convenient. But, if I need many objects >> of the >> > >> >> > >> same >> > >> >> > >> > > type, and need to show few views on screen, I got problems. >> > >> > > Is it possible to register QML type for object, not for class? >> > >> > > If I change some object, I need to see only its view changed. >> > >> > > >> > >> > > Best regard, >> > >> > > Nick >> > >> > > >> > >> > > -- >> > >> > > Mailing list: https://launchpad.net/~ubuntu-phone >> > >> > > Post to : ubuntu-phone@lists.launchpad.net >> > >> > > Unsubscribe : https://launchpad.net/~ubuntu-phone >> > >> > > More help : https://help.launchpad.net/ListHelp >> >> > >
-- Mailing list: https://launchpad.net/~ubuntu-phone Post to : ubuntu-phone@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-phone More help : https://help.launchpad.net/ListHelp