Is Qt Quick the right tool for my app ?
-
I'm working on the next version of a content authoring system for artists : http://i-score.org/ , and we want to work on a recursive data model, represented in a time line.
Basically, there are Processes that get executed during an Interval which occurs between two Events.
A Scenario (subclass of Process) contains Intervals and Events.
Hence you can have scenarios inside scenarios (it's the implementation of recursivity).For the current version (on the video) we were using the QGraphicsScene & al. but we had some shitty corner cases. But from what I saw from the docs, QML seems more targeted to a mobile app audience, while we are a heavy, bloated, Cubase-like, desktop app.
I also read somewhere that undo-redo and that kind of stuff did not always play well with QML, but we have already a full MVP + Command pattern implemented
So I ask of QML to :- be able to recursively encapsulate elements
- be able to move them in a scene,
- send signals when they are left- or right- clicked
- have them draggable and droppable
- be able to manage elements not known at compile-time (there is a plugin system where you can add your own Process)
-
Hello and welcome to devnet,
your GUI seems quite sexy so far. I will try to provide you an answer to all the points you mentioned:
- be able to recursively encapsulate elements
Should be possible, you can get a qml object or context from c++ - be able to move them in a scene,
Yes, you can move elements withhin your application.(Drag and drop-like or by a setting a xyz-position) - send signals when they are left- or right- clicked
A QML component emits signals when events are triggered(for example: A MouseArea emits clicked when you clicked). Also it is possible to define your own signals easily and catch them. (signal mySignal; onMySignal: doStuff; ) - have them draggable and droppable
Not from scratch, it would take a little time to implement a drag and drop, you probably could do this fully in qml, it would take more time to implement a grid based drag and drop. - be able to manage elements not known at compile-time (there is a plugin system where you can add your own Process)
You can dynamically create QML components or load full QML files on run-time!
TL;DR It should theoretically work, just give QML a try, work a little bit with it and test it out, if you like it you can try to switch your project to a QML project.
One last thing; there was a QtQuick "Bug" a few months ago (haven't worked with QML since then), where your application won't wake up after closing(not quiting) it under android, maybe it's fixed yet, i don't know.
If you still have questions then feel free to ask! =)
- be able to recursively encapsulate elements