Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED] QGraphicsItem events not working on some item's area
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] QGraphicsItem events not working on some item's area

Scheduled Pinned Locked Moved General and Desktop
13 Posts 4 Posters 4.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • BlackMambaB Offline
    BlackMambaB Offline
    BlackMamba
    wrote on last edited by
    #4

    Hello raven,

    Thanks for your answer.
    Unfortunetely, this doesnt change anything, I still have the same issue ...

    1 Reply Last reply
    0
    • raven-worxR Offline
      raven-worxR Offline
      raven-worx
      Moderators
      wrote on last edited by
      #5

      so when you set a break point into your mousePressEvent() handler it wont get even triggered for the non working area? Meaning you really don't receive an event at all?

      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
      If you have a question please use the forum so others can benefit from the solution in the future

      1 Reply Last reply
      0
      • V Offline
        V Offline
        Vaquita Tim
        wrote on last edited by
        #6

        Hi there,

        bq. not calling the bade class implementation:

        I agree with this 100% but think that this is a different issue. So far as I can see "isPressed" and the derived class mousePessEvent are redundant - better to use the provided stuff in the base class.

        Anyway, surely the fact that only 85% of the rect is "enabled" is related to the boudingRect(). I read this in the help :-
        bq. If you want to change the item's bounding rectangle, you must first call prepareGeometryChange()

        Should you be calling this in the override of boundingRect() ? The help is not so clear about where and when this should be called...

        I'm here to learn...

        Tim

        1 Reply Last reply
        0
        • raven-worxR Offline
          raven-worxR Offline
          raven-worx
          Moderators
          wrote on last edited by
          #7

          [quote author="Timothy" date="1381140131"]
          Anyway, surely the fact that only 85% of the rect is "enabled" is related to the boudingRect(). I read this in the help :-
          bq. If you want to change the item's bounding rectangle, you must first call prepareGeometryChange()

          Should you be calling this in the override of boundingRect() ? The help is not so clear about where and when this should be called...
          [/quote]
          the signal has to be triggered whenever it is about to be changed internally (in your implementation). In this case it's static all the time. So this isn't the problem.

          There are still many possibilities why it fails. Do you filter any events to the graphics view or its viewport? Do you have any widgets placed on the viewport?

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          1 Reply Last reply
          0
          • BlackMambaB Offline
            BlackMambaB Offline
            BlackMamba
            wrote on last edited by
            #8

            Thanks for your answers guys ...
            @Timothy, here I dont change the boundingRect ...
            @Raven, I dont receive any event at all when on the non working area.
            No widget on the viewport.
            However, myrectangle is a qgraphicswidget and not a qgraphicsitem, could it be the reason?

            class MyRectangle : public QGraphicsWidget

            I need widget for the signals/slots.

            Thanks for your help, I appreciate :)

            1 Reply Last reply
            0
            • raven-worxR Offline
              raven-worxR Offline
              raven-worx
              Moderators
              wrote on last edited by
              #9

              in your very first post you said you inherit from QGraphicsItem.
              If you just need the signal and slot functionality you should use QGraphicsObject.

              So do you filter events?

              It's hard to tell... all i can do is guessing. The code you've posted looks good IMHO. So i guess the problem is probably somewhere else "outside" of this class, since your item doesn't even receive the event.

              --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
              If you have a question please use the forum so others can benefit from the solution in the future

              1 Reply Last reply
              0
              • BlackMambaB Offline
                BlackMambaB Offline
                BlackMamba
                wrote on last edited by
                #10

                Raven, it inherits from QGraphicsWidget , which is a QGraphicsItem with QObject signal/slot properties.
                Sorry for this correction. However, cant see how this could be the issue.
                I dont filter events, its just a basic test with mouse press event all the code is up there ....

                1 Reply Last reply
                0
                • BlackMambaB Offline
                  BlackMambaB Offline
                  BlackMamba
                  wrote on last edited by
                  #11

                  I found the issue .... Trying with QGraphicsItem instead of QGraphicsWidget solved the issue ....
                  Can't understand why !! Any idea?

                  And I need the singnal/slot properties, QGraphicsWidget is supposed to do that, am I mistaken?

                  1 Reply Last reply
                  0
                  • N Offline
                    N Offline
                    NicuPopescu
                    wrote on last edited by
                    #12

                    Hi,

                    mouse events depend on the geometry/rect's size which in your case is not set anywhere ... you could print it out and find out it is 50x50 (the default minimum size) for whatever size you'd return in boundingRect() method, so those percents are even not relevant; boundingrect is used in re/drawing operations ...

                    you can fix in different ways:

                    1. just return rect() in boundingRect() and use setGeometry() in your creation code:

                    i.e.

                    @MyRectangle *rec = new MyRectangle;
                    rec->setGeometry(0,0,60,40);
                    ...@

                    this way provides flexibility over your widget's custom geometry

                    1. leave boundingRect() as it is and resize the widget in paint() method

                    i.e.

                    @...
                    QRectF rec = boundingRect();
                    resize(rec.width(),rec.height());
                    ...@

                    also you can inherit QGraphicsItem which works (it has no local rect , just a bounding one), and to enable signals/slots you must inherit from QObject and use Q_OBJECT macro ...

                    Cheers!

                    1 Reply Last reply
                    0
                    • BlackMambaB Offline
                      BlackMambaB Offline
                      BlackMamba
                      wrote on last edited by
                      #13

                      I understand. Thnk you very much for your explanations. I finally opted for the last solution and its works as expected.

                      bq. also you can inherit QGraphicsItem which works (it has no local rect , just a bounding one), and to enable signals/slots you must inherit from QObject and use Q_OBJECT macro …

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved