Hi Donald,

On Mon, Apr 23, 2012 at 5:26 PM, Donald Carr <sirsp...@gmail.com> wrote:
> Hey Girish,
>
> On Mon, Apr 23, 2012 at 9:04 AM, Girish Ramakrishnan
> <gir...@forwardbias.in> wrote:
>> On Mon, Apr 23, 2012 at 10:59 AM, Alan Alpert <alan.alp...@nokia.com> wrote:
>>>> And as others already pointed out, we need to be careful as to what we
>>>> expose in C++. Any API we add comes at a large cost (that you probably do
>>>> not see) in terms of maintenance and limitations to what we can change
>>>> because of binary compatibility.
>>>
>>> I can see the non-zero value in exposing the Rectangle element. It's pretty 
>>> much equivalent to QGraphicsRectItem then. I don't
>>> know about you, but I didn't find QGraphicsRectItem very useful at all. In 
>>> a C++ graphics scene, it wasn't worth the bother to
>>> compose images out of multiple QGraphicsRectItems. That approach was 
>>> cumbersome and inflexible compared to implementing your own
>>> QGraphicsItem and just painting a rectangle in paint(). Note that with 
>>> QQuickPaintedItem, you can do the exact same thing with
>>> scenegraph today (well, on the day Qt5 is released ;) ) just take your 
>>> QPainter* and go to town. Or use QQuickItem and paint it
>>> using scenegraph or GL directly, to truly get the sort of hardware 
>>> acceleration and speed that requires custom C++ code. (NB:
>>> after writing your super-fast C++ native object you can then use QML to 
>>> instantiate it and set initial properties, if that appeals
>>> to you.)
>>>
>>
>> Rectangle is not the best example. Exposing any non-trivial QML
>> element through C++ code is a huge benefit. For example, it would have
>> been very useful to have the C++ of WebView public so that I can
>> expose new properties in QML - just see C++ QWebView and QML WebView
>> for the disparity. Currently, one has to fork the WebView private
>> implementation which is not nice at all. Another example - adding
>> wheel event support to our MouseArea.
>
> Rectangle is a perfect example for people who stand against QML on
> principle alone. The idea of a QGraphicsView style API for scenegraph
> is certainly the most vocal request from the peanut gallery. Your

I probably removed too much context in my reply. I was specifically
replying to Lars comment below and alan's reply to that:
"We are already exposing most of the the C++ APIs that make sense for
application developers to use. Simply exposing the C++ interface of all
QML elements won't buy you anything, as the most important feature of Qt
Quick (bindings) still can't be handled that way.

There's zero value in exposing the C++ class that implements the QML
Rectangle element. There's nothing you can really do with it anyway. If
you need to create your own QML elements in C++ we have QQuickItem and
QQuickPaintedItem, which form a very good and solid basis."

My reply was certainly not about adding C++ apis equivalents for
scenegraph and C++ bindings apis and what not :)

>> I do think we should evaluate exposing the QML implementations to C++ for 
>> 5.1.
>
> I think a better question would be; What existing evaluations exist?
> And outside of the people seeking a contractual C++ API to scenegraph,
> what evident extensibility/functionality issues exist in QML today?
>

My point above is an extensibility issue with our current QML
offering. You cannot extend any existing QML element in C++. You have
to start from scratch. We basically mark all existing QML items as
'final' for C++ use.

Girish
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to