[Qt-qml] Find by id.
René Hansen
ext-rene.1.hansen at nokia.com
Thu Nov 11 12:59:24 CET 2010
> > Then I would like to test application logic by sending keypresses and
> > mouseclicks on certain child elements of my application, buttons, inputs
> > etc.
>
> Another thing you might be interesting in looking at is the visual test infrastructure (note that it's experimental, there are no compatibility guarantees, etc), located in tests/auto/declarative/qmlvisual. It handles interaction by sending events to the scene as a whole (with e.g. the global position information for a mouse event) and letting the scene send the event to the appropriate element.
I've looked at it and I think it's a novel idea and definitely worth
considering. It brings more decoupling of the application code and
testing code which I really like. However, I can't seem to find, that it
has any sort of formal verification, only record and playback of tests,
but I guess that is the price, if you want to have this level of
decoupling.
>
> > However, since I've instantiated my application in another qml file, the
> > internal id's of main are not accessible, so how do I send a click event
> > to a button for instance?
> >
> > That was why I wanted to have a getChildById method, so I could actually
> > find the element I wanted and send it whatever event.
> >
> > The way I've done it now is to enforce setting objectName on all
> > elements that I need to access to and then instead of having
> > getChildById, it's getChildByObjectName, which is just
> > QObject::findChild() wrapped.
> >
> > My point is that identical id and objectName makes for redundant code,
> > so if there was a way of addressing by id, as done in QML, it would
> > definitely help quell my OCD and make for a more DRY feel of the QML
> > code.
>
>
> I agree having to add objectName (or lots of property aliases) to production code simply for testing is not an ideal solution. I'm hesitant about a getChildById() for general QML programming, but it seems to make sense in an auto testing (and accessibility?) context, so maybe we should look for specific solutions there first (addressing e.g. the issues that Alan raised in another thread).
Alan has a valid point about dynamicly created QML objects,
http://lists.trolltech.com/pipermail/qt-qml/2010-November/001542.html
One solution might be to implicitly append or prepend the index to the
id in those cases, but I'm not sure how that would work though.
/René
More information about the Qt-qml
mailing list