I need to have this object in different qml files (for i.e. GameChat must be shown on GameCreation,Game,GameResults pages: this it differents QML files and differents pages in PageStack), but I created only one QtQuickView in main.cpp. So, do view is qml file or QtQuckView object?
2013/9/30 Vladimir M. <mlvl...@gmail.com> > You probably can't share a single instance of a QML visual item between > views, but as soon as you have the type registered properly / importable / > etc, you can use instantiate it in as many views as you like. > A QObject pointer can be passed around to items living in different veiws > inside the same application, of course (but watch out for memory management > issues -- see CppOwnership / QMLOwnership / etc in the docs under "memory > management"). > > Easiest way may be to set the same object as a context prop for several > views (unless you have some objections to this practice, like ones > mentioned up in the thread). > > Lastly, there is that (legitimate) trick allowing QML items to be > "rendered" by other items, resulting in the same item being shown in > multiple places of the same scene (but being manipalatable anywhere except > its actual position) -- look into the shader effects and such. > > > On Mon, Sep 30, 2013 at 2:34 PM, Николай Шатохин <n.shatok...@gmail.com>wrote: > >> What if I need to show the same QML object in two different places? How >> to do this? How to create new QML object without recreating it in C++? >> >> >> 2013/9/30 Николай Шатохин <n.shatok...@gmail.com> >> >>> 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 >> >> >
-- 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