[Qt-interest] QGraphicsView with QGestureEvent

Raymond de Vries reedev at xs4all.nl
Tue Dec 8 21:29:24 CET 2009


Hi Elias,

Thanks for pointing at the knob example. I've looked a lot at the 
various examples but it was never clear how the multitouch and gesture 
classes work together. Living on the edge, obviously ;-)

Thanks again, I will take a look at it and combine the examples.

Best regards
Raymond




Elias Capito wrote:
> Hi Raymond,
>
> Yes, I can use the events QTouchEvent in place of QGestureEvent, both 
> they are not compatible, because the gesture need the touch point.
>
> To manage the touchpoint yourself, you need just use 
> setAcceptTouchEvent(true) in your QGraphicsObject and implement the 
> method QGraphicsObject::sceneEvent(...). So, you don't need to play 
> with the viewport for the touchpoint.
>
> In directory Example of Qt, you can see the directory multitouch, 
> inside there is some example using QTouchEvent, the most interessant 
> is knobs.
>
> Best regards
> Elias
>
>
> 2009/12/8 Raymond de Vries <reedev at xs4all.nl <mailto:reedev at xs4all.nl>>
>
>     Hi Elias,
>
>     I can't tell from your messages but are you using multitouch
>     (without the gesture classes) now with graphicsview and some
>     graphicsobjects on it? Is that so? It might be possible to do
>     multitouch yourself (so without gestures) but I have not yet found
>     out how to distinguish between the graphicsview (and it's
>     viewport) and the graphics items on it.
>
>     I would love to find out how that works, even with pure multitouch
>     events.
>
>     thanks, best regards
>     Raymond
>
>
>
>     Elias Capito wrote:
>
>         Hi,
>
>         I am using Qt 4.6.0 on Windows 7 x64, who is installed on a
>         Dell Latitude XT with the last N-Trig driver.
>
>         Is not related with the topic, but if you can answer, it would
>         be good.
>
>         I have a question about the gesture QSwipeGesture and
>         QTapAndHoldGesture, the first are sometimes detect when I do
>         strange gesture with many fingers, but I don't know how :D and
>         the second is never detect, but the match in Windows is detect.
>
>         Best regards
>         Elias
>
>         2009/12/8 Raymond de Vries <reedev at xs4all.nl
>         <mailto:reedev at xs4all.nl> <mailto:reedev at xs4all.nl
>         <mailto:reedev at xs4all.nl>>>
>
>
>            Hi,
>
>            Ok, I can confirm this here too with your sample application as
>            well as my own application. Fyi, I am using my own built
>            qt-everywhere-opensource-src-4.6.0 on Windows 7, Visual
>         Studio 9
>            2008. I'm sorry that I did not get your (by Denis) first
>         remark to
>            grab the getures with the *viewport*, I was doing it on the
>            graphicsview directly (which resulted in the same asserion
>         btw).
>
>            Any hints or tips are welcome.
>
>            best regards
>            Raymond
>
>
>
>            Elias Capito wrote:
>
>
>                Thanks for your reply Denis.
>
>                I have add the all gesture to the viewport with
>                viewport()->grabGesture(...) in QGraphicsView and to my
>         item,
>                but when I debug my application any gesture are
>         delivered to
>                the items.
>
>                I have tested with QGraphicsView and my own herited
>         class of
>                QGraphicsView.
>
>                I have the following error when I make a gesture on an item
>                and after i touch the viewport (not an item) : *ASSERT:
>                "!isEmpty<>" ..
>
>                *
>                I add the source code* *in attachement*.
>                *
>
>                Best regards
>
>                2009/12/7 Raymond de Vries <reedev at xs4all.nl
>         <mailto:reedev at xs4all.nl>
>                <mailto:reedev at xs4all.nl <mailto:reedev at xs4all.nl>>
>         <mailto:reedev at xs4all.nl <mailto:reedev at xs4all.nl>
>
>                <mailto:reedev at xs4all.nl <mailto:reedev at xs4all.nl>>>>
>
>
>                   Hi Denis,
>
>                   I was also following this thread and I tried the
>         same, with
>                   QGraphicsWebView but even with your advice, I don't
>         get the
>                   gesture events...
>
>                   This is what you mean to do:
>                   MTCanvas : public QGraphicsView
>                   constructor
>                    viewport()->setAttribute(Qt::WA_AcceptTouchEvents);
>                    grabGesture(Qt::PanGesture);
>                    grabGesture(Qt::PinchGesture);
>                    grabGesture(Qt::SwipeGesture);
>                    etc
>                   MTCancas::event() does receive Gesture events
>
>                   MTWebBrowser : public QGraphicsWebView
>                   constructor
>                    setAcceptTouchEvents(true);
>                    grabGesture(Qt::PanGesture);
>                    grabGesture(Qt::PinchGesture);
>                    grabGesture(Qt::SwipeGesture);
>                    etc
>                   MTWebBrowser::event(QEvent *event) does not receive
>         Gesture
>                events
>
>                   Is this supposed to work?
>
>                   Thanks a lot, best regards
>                   Raymond
>
>
>
>
>
>                   Denis Dzyubenko wrote:
>
>                       Hi Elias,
>
>                       2009/12/3 Elias Capito <elias.capito at gmail.com
>         <mailto:elias.capito at gmail.com>
>                <mailto:elias.capito at gmail.com
>         <mailto:elias.capito at gmail.com>>
>                       <mailto:elias.capito at gmail.com
>         <mailto:elias.capito at gmail.com>
>                <mailto:elias.capito at gmail.com
>         <mailto:elias.capito at gmail.com>>>>:
>
>                                         I want to do a multitouch
>         application.
>
>                           I have a problem with the QGestureEvent on a
>                           QGraphicsObject item . I use
>                           "grabGesture" on my item in constructor and
>         i debug
>                to see
>                           the input event.
>
>                           When I run the application, the
>         QGestureEvent never
>                           appear, but if I use
>                           QTouchEvent on item in place of
>         QGestureEvent, with
>                           "setAcceptTouchEvent",
>                           in my debug I can see the touch event.
>
>                           If I use QGestureEvent with a simple QWidget
>         and I
>                run it,
>                           I can see the
>                           gesture event, so i think it's correct.
>
>                           It's the first time, that I use
>         QGraphicsView, so I
>                think
>                           i have miss
>                           something.
>
>                           Anyone have an idea, why the QGestureEvent not
>                appear on
>                           my item ?
>                            
>                       right now to get gesture events on a
>         QGraphicsObject it
>                should
>                       subscribe to a gesture _and_ the viewport of the
>                graphicsview
>                       should
>                       also explicitly subscribe to the same gesture.
>                Apparently it isn't
>                       documented right now, sorry about that. Anyway,
>         I this
>                will be
>                       improved in future versions of Qt so that you
>         will not
>                have to
>                       do that
>                       manually (thank god I forgot to document that,
>         so we can
>                       change the
>                       behavior ;) )
>
>                       However for now you need to make sure the
>         viewport also
>                       subscribes to
>                       the same gesture type.
>
>                      
>
>
>
>
>




More information about the Qt-interest-old mailing list