[Development] Extending QML flickable element

Sandro Andrade sandroandrade at kde.org
Tue Nov 22 13:55:39 CET 2011


Just to make it clearer:

>From docs:
"You may want to mix QML and C++ for a number of reasons. For example:
...
To write your own QML elements (whether for your applications, or for
distribution to others)"

iirc, we have two approaches for creating new QML elements: as QML
documents and as QObject-based C++ classes:
I'm wondering about the criteria to choose the most suitable approach:

- With C++ classes you have virtually unlimited functionality but you
cannot build upon already
existing QML elements (eg. dynamic elements creation) without linking
to private headers.
- With QML documents you have others QML elements at your disposal but
functionality is
restrict to what you can do with javascript.

Is that right ?

TIA,
--
Sandro

On Mon, Nov 21, 2011 at 10:49 AM,  <alan.alpert at nokia.com> wrote:
> No - classes only exported with Q_AUTOTEST_EXPORT are not meant to be used this way. They are only exported at all in developer build so that autotests can use them. Deployed versions of Qt will not have these symbols exported.
>
> Flickable is not public C++ API, only public QML API. To create a flickable extended QML component, you should use
> Flickable{
>    //QML code goes here
> }
>
> --
> Alan Alpert
> ________________________________________
> From: development-bounces+alan.alpert=nokia.com at qt-project.org [development-bounces+alan.alpert=nokia.com at qt-project.org] on behalf of ext Sandro Andrade [sandroandrade at kde.org]
> Sent: Monday, November 21, 2011 10:27 PM
> To: shane.kearns at accenture.com
> Cc: development at qt-project.org
> Subject: Re: [Development] Extending QML flickable element
>
> Nice, but even if I build qt with -developer-build is it a correct and
> reasonable way to create my flickable extended qml component ?
> --
> Sandro
>
> On Mon, Nov 21, 2011 at 10:04 AM,  <shane.kearns at accenture.com> wrote:
>> class Q_AUTOTEST_EXPORT QDeclarativeFlickable
>>
>> The Q_AUTOTEST_EXPORT means the symbols are only available when Qt is configured as a developer build.
>> They are exported for the unit tests to use, but not exported in a normal build.
>>
>>> -----Original Message-----
>>> From: development-bounces+shane.kearns=accenture.com at qt-project.org
>>> [mailto:development-bounces+shane.kearns=accenture.com at qt-project.org]
>>> On Behalf Of Sandro Andrade
>>> Sent: Monday, November 21, 2011 11:57
>>> To: development at qt-project.org
>>> Subject: [Development] Extending QML flickable element
>>>
>>> Hi there,
>>>
>>> I'm trying to extend QML flickable element to provide a new QML view.
>>> Building occurs fine but the generated library
>>> have some missing symbols. Any chance for building and linking against
>>> qt private headers outside qt source folders ?
>>>
>>> TIA,
>>> Sandro
>>>
>>>       linux-gate.so.1 =>  (0xb78a3000)
>>>       libgraph.so.5 => /usr/lib/libgraph.so.5 (0xb7878000)
>>>       libgvc.so.6 => /usr/lib/libgvc.so.6 (0xb7802000)
>>>       libQtDeclarative.so.4 =>
>>> /usr/local/Trolltech/Qt-4.7.4/lib/libQtDeclarative.so.4 (0xb748c000)
>>>       libQtScript.so.4 =>
>>> /usr/local/Trolltech/Qt-4.7.4/lib/libQtScript.so.4 (0xb7206000)
>>>       libQtSvg.so.4 => /usr/local/Trolltech/Qt-4.7.4/lib/libQtSvg.so.4
>>> (0xb71af000)
>>>       libQtSql.so.4 => /usr/local/Trolltech/Qt-4.7.4/lib/libQtSql.so.4
>>> (0xb7170000)
>>>       libQtXmlPatterns.so.4 =>
>>> /usr/local/Trolltech/Qt-4.7.4/lib/libQtXmlPatterns.so.4 (0xb6d70000)
>>>       libQtGui.so.4 => /usr/local/Trolltech/Qt-4.7.4/lib/libQtGui.so.4
>>> (0xb62a4000)
>>>       libQtNetwork.so.4 =>
>>> /usr/local/Trolltech/Qt-4.7.4/lib/libQtNetwork.so.4 (0xb6167000)
>>>       libQtCore.so.4 => /usr/local/Trolltech/Qt-4.7.4/lib/libQtCore.so.4
>>> (0xb5ec1000)
>>>       libpthread.so.0 => /lib/libpthread.so.0 (0xb5ea6000)
>>>       libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb5db7000)
>>>       libm.so.6 => /lib/libm.so.6 (0xb5d8d000)
>>>       libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb5d70000)
>>>       libc.so.6 => /lib/libc.so.6 (0xb5bf4000)
>>>       libcdt.so.5 => /usr/lib/libcdt.so.5 (0xb5bed000)
>>>       libltdl.so.7 => /usr/lib/libltdl.so.7 (0xb5be2000)
>>>       libdl.so.2 => /lib/libdl.so.2 (0xb5bdd000)
>>>       libxdot.so.4 => /usr/lib/libxdot.so.4 (0xb5bd9000)
>>>       libpathplan.so.4 => /usr/lib/libpathplan.so.4 (0xb5bd1000)
>>>       libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb5ba6000)
>>>       libz.so.1 => /usr/lib/libz.so.1 (0xb5b8e000)
>>>       librt.so.1 => /lib/librt.so.1 (0xb5b85000)
>>>       libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb5b7f000)
>>>       libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb5a87000)
>>>       libpng14.so.14 => /usr/lib/libpng14.so.14 (0xb5a5b000)
>>>       libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb59bf000)
>>>       libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb5970000)
>>>       libSM.so.6 => /usr/lib/libSM.so.6 (0xb5969000)
>>>       libICE.so.6 => /usr/lib/libICE.so.6 (0xb5952000)
>>>       libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb594a000)
>>>       libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb591b000)
>>>       libXext.so.6 => /usr/lib/libXext.so.6 (0xb5909000)
>>>       libX11.so.6 => /usr/lib/libX11.so.6 (0xb57d3000)
>>>       /lib/ld-linux.so.2 (0xb78a4000)
>>>       libpcre.so.0 => /lib/libpcre.so.0 (0xb5773000)
>>>       libbz2.so.1.0 => /lib/libbz2.so.1.0 (0xb5762000)
>>>       libffi.so.5 => /usr/lib/libffi.so.5 (0xb575b000)
>>>       libuuid.so.1 => /lib/libuuid.so.1 (0xb5755000)
>>>       libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb5737000)
>>>       libXau.so.6 => /usr/lib/libXau.so.6 (0xb5734000)
>>>       libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb572e000)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable10timerEventEP11QTimerEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable10sceneEventEP6QEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable15geometryChangedERK6QRectFS2_
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable11setContentXEd     (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable11setContentYEd     (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMouseEven
>>> t(./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable6tickedEv   (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZNK21QDeclarativeFlickable10minXExtentEv     (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZNK21QDeclarativeFlickable10minYExtentEv     (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZNK21QDeclarativeFlickable10maxXExtentEv     (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZNK21QDeclarativeFlickable10maxYExtentEv     (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable13viewportMovedEv
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZThn8_N21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEve
>>> nt    (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZThn8_N21QDeclarativeFlickable10sceneEventEP6QEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZThn8_N21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseE
>>> vent  (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZThn8_N21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEv
>>> ent   (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZThn8_N21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMous
>>> eEvent        (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZThn8_N21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol: _ZTI21QDeclarativeFlickable
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable16staticMetaObjectE
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickableC2EP16QDeclarativeItem
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable11qt_metacastEPKc
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol: _ZN21QDeclarativeFlickableD2Ev
>>>       (./libqmlgraphvizplugin.so)
>>> undefined symbol:
>>> _ZN21QDeclarativeFlickable11qt_metacallEN11QMetaObject4CallEiPPv
>>>       (./libqmlgraphvizplugin.so)
>>>
>>> --
>>> Sandro
>>> _______________________________________________
>>> Development mailing list
>>> Development at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/development
>>
>>
>> ________________________________
>> Subject to local law, communications with Accenture and its affiliates including telephone calls and emails (including content), may be monitored by our systems for the purposes of security and the assessment of internal compliance with Accenture policy.
>> ______________________________________________________________________________________
>>
>> www.accenture.com
>>
>>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>



More information about the Development mailing list