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. QGraphicsView 90 degree Rotation
Forum Updated to NodeBB v4.3 + New Features

QGraphicsView 90 degree Rotation

Scheduled Pinned Locked Moved Unsolved General and Desktop
25 Posts 4 Posters 11.7k Views 3 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.
  • kshegunovK kshegunov
    QTransform rotation;
    rotation.rotate(90);
    
    QTransform scaling;
    scaling.scale(0.5, 1);
    
    setTransform(rotation * scaling);
    // Or
    QVector2D vector;
    vector = rotation * scaling * vector;
    

    Modify according to your needs.

    keksi venksiK Offline
    keksi venksiK Offline
    keksi venksi
    wrote on last edited by keksi venksi
    #16

    @kshegunov

    Thanks for your reply .

    In my case I dont want to use scale to zoom

    I wish to use fitInView() to achieve zoom.

    In short note after applying transform (rotate 90 degree) fitInView() does not works fine . I want fitInView() to do zoom

    keksi venksiK 1 Reply Last reply
    0
    • keksi venksiK keksi venksi

      @kshegunov

      Thanks for your reply .

      In my case I dont want to use scale to zoom

      I wish to use fitInView() to achieve zoom.

      In short note after applying transform (rotate 90 degree) fitInView() does not works fine . I want fitInView() to do zoom

      keksi venksiK Offline
      keksi venksiK Offline
      keksi venksi
      wrote on last edited by keksi venksi
      #17

      @keksi-venksi

      Can any one help me on it .
      Helps are really appreciable

      keksi venksiK 1 Reply Last reply
      0
      • ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #18

        customgraphicsview.h

        #ifndef CUSTOMGRAPHICSVIEW_H
        #define CUSTOMGRAPHICSVIEW_H
        
        #include <QGraphicsView>
        
        class CustomGraphicsView : public QGraphicsView
        {
            Q_OBJECT
        public:
            enum class Mode
            {
                x,
                y
            };
        
            explicit CustomGraphicsView(QWidget *parent = nullptr);
            void reset();
            void fit();
            void setMode(Mode mode);
        
        protected:
            void wheelEvent(QWheelEvent* event) override;
        
        private:
            void updateTransform();
            Mode m_mode = Mode::x;
            double m_scale = 1.0;
        };
        
        #endif // CUSTOMGRAPHICSVIEW_H
        

        customgraphicsview.cpp

        #include "customgraphicsview.h"
        #include <QBrush>
        #include <QColor>
        #include <QWheelEvent>
        #include <QDebug>
        
        CustomGraphicsView::CustomGraphicsView(QWidget *parent)
            : QGraphicsView(parent)
        {
            setBackgroundBrush(QBrush(QColor("grey")));
        }
        
        void CustomGraphicsView::reset()
        {
            m_mode = Mode::x;
            m_scale = 1.0;
            updateTransform();
        }
        
        void CustomGraphicsView::fit()
        {
            auto const r = scene()->itemsBoundingRect();
            switch (m_mode) {
            case Mode::x: {
                double f1 = width() / (r.width() + 2);
                double f2 = height() / (r.height() + 2);
                m_scale = qMin(f1,f2);
                updateTransform();
                break;
            }
            case Mode::y: {
                double f1 = height() / (r.width() + 2);
                double f2 = width() / (r.height() + 2);
                m_scale = qMin(f1,f2);
                updateTransform();
                break;
            }
            }
        }
        
        void CustomGraphicsView::setMode(CustomGraphicsView::Mode mode)
        {
            if (m_mode == mode)
                return;
            m_mode = mode;
            updateTransform();
        }
        
        void CustomGraphicsView::wheelEvent(QWheelEvent *event)
        {
            auto const delta = (event->delta() <0.0) ? -1.0 : 1.0;
            m_scale += 0.1 * delta;
            updateTransform();
        }
        
        void CustomGraphicsView::updateTransform()
        {
            QTransform t;
            if (m_mode == Mode::y)
                t.rotate(90);
            t.scale(m_scale, m_scale);
            setTransform(t);
        }
        
        1 Reply Last reply
        1
        • keksi venksiK keksi venksi

          @keksi-venksi

          Can any one help me on it .
          Helps are really appreciable

          keksi venksiK Offline
          keksi venksiK Offline
          keksi venksi
          wrote on last edited by
          #19

          @keksi-venksi

          I would like to continue with this thread

          in the normal mode im using view->fitInView(rect.x(),0,rect.width(),30)

          in the 90 degree rotated mode im using view->fitInView(0,rect.y(),30,rect.height())

          I have tried with different combinations of fitInView for 90 degree rotataion Nothing works

          Can any one suggest me the coordinates for the fitInView() for the rotated view

          Help me on it

          ? 1 Reply Last reply
          0
          • keksi venksiK keksi venksi

            @keksi-venksi

            I would like to continue with this thread

            in the normal mode im using view->fitInView(rect.x(),0,rect.width(),30)

            in the 90 degree rotated mode im using view->fitInView(0,rect.y(),30,rect.height())

            I have tried with different combinations of fitInView for 90 degree rotataion Nothing works

            Can any one suggest me the coordinates for the fitInView() for the rotated view

            Help me on it

            ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #20

            @keksi-venksi Please try the code above that I just posted. If I understood you right, then it should meet your requirements :)

            keksi venksiK 1 Reply Last reply
            0
            • ? A Former User

              @keksi-venksi Please try the code above that I just posted. If I understood you right, then it should meet your requirements :)

              keksi venksiK Offline
              keksi venksiK Offline
              keksi venksi
              wrote on last edited by
              #21

              @Wieland
              @Wieland

              Thanks for your reply

              I am using fitInView in many places in my project to work stable . So I would like to get some suggestions for fitInView() coordinates

              ? 1 Reply Last reply
              0
              • keksi venksiK keksi venksi

                @Wieland
                @Wieland

                Thanks for your reply

                I am using fitInView in many places in my project to work stable . So I would like to get some suggestions for fitInView() coordinates

                ? Offline
                ? Offline
                A Former User
                wrote on last edited by A Former User
                #22

                @keksi-venksi said in QGraphicsView 90 degree Rotation:

                I am using fitInView in many places in my project to work stable . So I would like to get some suggestions for fitInView() coordinates

                This is probably my last posting here because I think I can't help you. Have you seen my code above? The fit() function? It does just what you want, look:

                1 Reply Last reply
                1
                • keksi venksiK Offline
                  keksi venksiK Offline
                  keksi venksi
                  wrote on last edited by keksi venksi
                  #23

                  Hi

                  Thanks for your reply

                  In this example in fit method you are trying it to fit the view in the frame when we click a button but my case i have used fitInView() while zooming .So it should adjust the view with the zooming delta

                  So when ever we zoom fitInView() should be adjusted accordingly to the scene and update the scene as well

                  keksi venksiK 1 Reply Last reply
                  0
                  • keksi venksiK keksi venksi

                    Hi

                    Thanks for your reply

                    In this example in fit method you are trying it to fit the view in the frame when we click a button but my case i have used fitInView() while zooming .So it should adjust the view with the zooming delta

                    So when ever we zoom fitInView() should be adjusted accordingly to the scene and update the scene as well

                    keksi venksiK Offline
                    keksi venksiK Offline
                    keksi venksi
                    wrote on last edited by
                    #24

                    @keksi-venksi

                    To All The issue has been fixed

                    what i did was simple

                    X mode fitinview(0,0,calcValue,viewRectHeight)

                    Y Mode fitinview(0,0,viewRectWidth,calcValue) ; rotate(90)

                    After calling fitinview again im calling rotate of 90 degree

                    1 Reply Last reply
                    0
                    • EddyE Offline
                      EddyE Offline
                      Eddy
                      wrote on last edited by
                      #25

                      @keksi-venksi
                      Could you please mark this topic as solved then. Others will find it easier if they have similar questions.

                      Qt Certified Specialist
                      www.edalsolutions.be

                      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