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. Issues with QScrollArea and custom widget
Forum Updated to NodeBB v4.3 + New Features

Issues with QScrollArea and custom widget

Scheduled Pinned Locked Moved Solved General and Desktop
qscrollarea
23 Posts 4 Posters 9.4k Views 4 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #13

    Hi,

    Might be a silly question but how are you handling UGfxDisplay ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    0
    • Joel BodenmannJ Offline
      Joel BodenmannJ Offline
      Joel Bodenmann
      wrote on last edited by
      #14

      @kshegunov said in Issues with QScrollArea and custom widget:

      Well, something moved at least. Can you get the paint rects you get when zoomin in/out and when you scroll up/down/left/right along with the image rects and dump them all into a file?

      Sure, I'll get that done.

      @SGaist said in Issues with QScrollArea and custom widget:

      Might be a silly question but how are you handling UGfxDisplay ?

      I'm sorry, I don't understand what handling means in this context. Can you be more specific?

      Industrial process automation software: https://simulton.com
      Embedded Graphics & GUI library: https://ugfx.io

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #15

        Are you calling something like _centralScrollArea->setWidget(_myGDisplay); ?

        Then, are you sure that you should handle the scaling in GDisplay ?

        When zooming, what about having something like _myGDisplay->resize(_scale * _sourceSize); So you only handle painting in that widget.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • kshegunovK kshegunov

          @Joel-Bodenmann said in Issues with QScrollArea and custom widget:

          Still waiting on my QAbstractModel merging thingy ;)

          I know, I know.

          Here you go: https://www.screencast.com/t/nNbHckWi

          Well, something moved at least. Can you get the paint rects you get when zoomin in/out and when you scroll up/down/left/right along with the image rects and dump them all into a file?

          Joel BodenmannJ Offline
          Joel BodenmannJ Offline
          Joel Bodenmann
          wrote on last edited by
          #16

          @kshegunov said in Issues with QScrollArea and custom widget:

          Well, something moved at least. Can you get the paint rects you get when zoomin in/out and when you scroll up/down/left/right along with the image rects and dump them all into a file?

          Here you go: http://paste.ugfx.io/show/a5113bcc08

          @SGaist said in Issues with QScrollArea and custom widget:

          Are you calling something like _centralScrollArea->setWidget(_myGDisplay); ?

          Yep, that's what I am doing.

          @SGaist said in Issues with QScrollArea and custom widget:

          When zooming, what about having something like _myGDisplay->resize(_scale * _sourceSize); So you only handle painting in that widget.

          In my opinion that won't work as it will not scale up the contents inside of my UGfxDisplay. Keep in mind that the QPixmap I draw in my UGfxDisplay::paintEvent() is the content of a virtual display. That virtual display has a given size (width and height) in pixels. When zooming in I need to scale up everything. I don't display more of the widget, I just display the same content bigger.

          Industrial process automation software: https://simulton.com
          Embedded Graphics & GUI library: https://ugfx.io

          kshegunovK 1 Reply Last reply
          0
          • Joel BodenmannJ Joel Bodenmann

            @kshegunov said in Issues with QScrollArea and custom widget:

            Well, something moved at least. Can you get the paint rects you get when zoomin in/out and when you scroll up/down/left/right along with the image rects and dump them all into a file?

            Here you go: http://paste.ugfx.io/show/a5113bcc08

            @SGaist said in Issues with QScrollArea and custom widget:

            Are you calling something like _centralScrollArea->setWidget(_myGDisplay); ?

            Yep, that's what I am doing.

            @SGaist said in Issues with QScrollArea and custom widget:

            When zooming, what about having something like _myGDisplay->resize(_scale * _sourceSize); So you only handle painting in that widget.

            In my opinion that won't work as it will not scale up the contents inside of my UGfxDisplay. Keep in mind that the QPixmap I draw in my UGfxDisplay::paintEvent() is the content of a virtual display. That virtual display has a given size (width and height) in pixels. When zooming in I need to scale up everything. I don't display more of the widget, I just display the same content bigger.

            kshegunovK Offline
            kshegunovK Offline
            kshegunov
            Moderators
            wrote on last edited by
            #17

            Have you noticed your image doesn't grow (or shrink)?

            Read and abide by the Qt Code of Conduct

            1 Reply Last reply
            0
            • Joel BodenmannJ Offline
              Joel BodenmannJ Offline
              Joel Bodenmann
              wrote on last edited by
              #18

              The image is not supposed to grow. The image represents the contents of the virtual display. It will always have the same amount of pixels no matter how much I zoom into the UGfxDisplay widget. My virtual display does not grow by zooming into it :p

              Industrial process automation software: https://simulton.com
              Embedded Graphics & GUI library: https://ugfx.io

              kshegunovK 1 Reply Last reply
              0
              • Joel BodenmannJ Joel Bodenmann

                The image is not supposed to grow. The image represents the contents of the virtual display. It will always have the same amount of pixels no matter how much I zoom into the UGfxDisplay widget. My virtual display does not grow by zooming into it :p

                kshegunovK Offline
                kshegunovK Offline
                kshegunov
                Moderators
                wrote on last edited by kshegunov
                #19

                But why are you redrawing reinitializing it at each paint event then? It got me confused, now I believe I know what you want. Should be something like this (I *think*):

                painter.drawImage(event->rect(), img, event->rect() / _scale);
                

                PS. Or not. I need to think.
                PS. After thinking:

                QRect paintRect = event->rect();
                QRect sourceRect(paintRect.topLeft() / _scale, paintRect.size() / _scale);
                painter.drawImage(paintRect, img, sourceRect);
                

                Read and abide by the Qt Code of Conduct

                1 Reply Last reply
                2
                • Joel BodenmannJ Offline
                  Joel BodenmannJ Offline
                  Joel Bodenmann
                  wrote on last edited by Joel Bodenmann
                  #20

                  Wooo, I love you \o/ (still, not again, don't worry honey)

                  This is with your "After thinking" code: https://www.screencast.com/t/cEAa2z4Zd

                  In retrospect this seems somewhat obvious...

                  Industrial process automation software: https://simulton.com
                  Embedded Graphics & GUI library: https://ugfx.io

                  kshegunovK 1 Reply Last reply
                  0
                  • Joel BodenmannJ Joel Bodenmann

                    Wooo, I love you \o/ (still, not again, don't worry honey)

                    This is with your "After thinking" code: https://www.screencast.com/t/cEAa2z4Zd

                    In retrospect this seems somewhat obvious...

                    kshegunovK Offline
                    kshegunovK Offline
                    kshegunov
                    Moderators
                    wrote on last edited by
                    #21

                    @Joel-Bodenmann said in Issues with QScrollArea and custom widget:

                    Wooo, I love you

                    Nice! Love and world peace and such things. ;)

                    In retrospect this seems somewhat obvious...

                    Yes, quantum mechanics also seems rather obvious to me ... after a few people thought and invented it. ;)

                    Read and abide by the Qt Code of Conduct

                    Joel BodenmannJ 1 Reply Last reply
                    0
                    • kshegunovK kshegunov

                      @Joel-Bodenmann said in Issues with QScrollArea and custom widget:

                      Wooo, I love you

                      Nice! Love and world peace and such things. ;)

                      In retrospect this seems somewhat obvious...

                      Yes, quantum mechanics also seems rather obvious to me ... after a few people thought and invented it. ;)

                      Joel BodenmannJ Offline
                      Joel BodenmannJ Offline
                      Joel Bodenmann
                      wrote on last edited by Joel Bodenmann
                      #22

                      @kshegunov said in Issues with QScrollArea and custom widget:

                      Yes, quantum mechanics also seems rather obvious to me ... after a few people thought and invented it. ;)

                      invented? ;)
                      Too bad those people didn't teach you how to write nice code though :p

                      Thank you for your help guys, much appreciated!

                      Industrial process automation software: https://simulton.com
                      Embedded Graphics & GUI library: https://ugfx.io

                      kshegunovK 1 Reply Last reply
                      0
                      • Joel BodenmannJ Joel Bodenmann

                        @kshegunov said in Issues with QScrollArea and custom widget:

                        Yes, quantum mechanics also seems rather obvious to me ... after a few people thought and invented it. ;)

                        invented? ;)
                        Too bad those people didn't teach you how to write nice code though :p

                        Thank you for your help guys, much appreciated!

                        kshegunovK Offline
                        kshegunovK Offline
                        kshegunov
                        Moderators
                        wrote on last edited by
                        #23

                        @Joel-Bodenmann said in Issues with QScrollArea and custom widget:

                        Too bad those people didn't teach you how to write nice code though :p

                        This is all a fault of my own, sadly, but hey life's not all roses ... :)

                        Thank you for your help guys, much appreciated!

                        You are welcome. Now go and make us proud! ;D

                        Read and abide by the Qt Code of Conduct

                        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