Results 1 to 3 of 3

Thread: QGraphicsView size incorrect after adding to QSplitter

  1. #1
    Join Date
    Sep 2015
    Posts
    2
    Qt products
    Qt5
    Platforms
    Unix/X11 Windows

    Default QGraphicsView size incorrect after adding to QSplitter

    I'm having a problem adding a QGraphicsView to my QGridLayout.

    My grid layout is setup as a 2x2 grid with vertical and horizontal splitters to allow each view to be resized. Originally i had 4 QOpenGLWidget views which worked fine ( see attachment good.png )

    But when i add a QGraphicsView to the splitter it doesn't size correctly (see attachment bad.png). The QGraphicsView is shown in the top right hand side of the grid. I was expecting it to take up 1/2 the grid size in the same way as my QOpenGLWidget.

    Most likely something minor wrong but can't figure it out. Any advise appreciated.

    Here's my grid layout/splitter setup code;

    Qt Code:
    1. m_editorLayout = new QGridLayout ( editorGridViewParentWidget );
    2. m_editorLayout->setObjectName ( QStringLiteral ( "gridLayout" ) );
    3. QSplitter* verticalSplitter = new QSplitter ( m_stackedWidgetUI.editorGridViewParentWidget );
    4. verticalSplitter->setObjectName ( QStringLiteral ( "verticalSplitter" ) );
    5. verticalSplitter->setAutoFillBackground ( false );
    6. verticalSplitter->setFrameShape ( QFrame::Panel );
    7. verticalSplitter->setFrameShadow ( QFrame::Raised );
    8. verticalSplitter->setMidLineWidth ( 0 );
    9. verticalSplitter->setOrientation ( Qt::Vertical );
    10. verticalSplitter->setOpaqueResize ( false );
    11. m_editorViewTopHorizontalSplitter = new QSplitter ( verticalSplitter );
    12. m_editorViewBottomHorizontalSplitter = new QSplitter ( verticalSplitter );
    13.  
    14. m_editorViewTopHorizontalSplitter->setObjectName ( QStringLiteral ( "topHorizontalSplitter" ) );
    15. QSizePolicy sizePolicy ( QSizePolicy::Preferred, QSizePolicy::Preferred );
    16. sizePolicy.setHorizontalStretch ( 1 );
    17. sizePolicy.setVerticalStretch ( 0 );
    18. sizePolicy.setHeightForWidth ( m_editorViewTopHorizontalSplitter->sizePolicy().hasHeightForWidth() );
    19. m_editorViewTopHorizontalSplitter->setSizePolicy ( sizePolicy );
    20. m_editorViewTopHorizontalSplitter->setStretchFactor ( 0, 1 );
    21. m_editorViewTopHorizontalSplitter->setStretchFactor ( 1, 1 );
    22. m_editorViewTopHorizontalSplitter->setFrameShape ( QFrame::Panel );
    23. m_editorViewTopHorizontalSplitter->setFrameShadow ( QFrame::Raised );
    24. m_editorViewTopHorizontalSplitter->setMidLineWidth ( 0 );
    25. m_editorViewTopHorizontalSplitter->setOrientation ( Qt::Horizontal );
    26. m_editorViewTopHorizontalSplitter->setOpaqueResize ( false );
    27. m_editorViewBottomHorizontalSplitter->setObjectName ( QStringLiteral ( "bottomHorizontalSplitter" ) );
    28. sizePolicy.setHeightForWidth ( m_editorViewBottomHorizontalSplitter->sizePolicy().hasHeightForWidth() );
    29. m_editorViewBottomHorizontalSplitter->setSizePolicy ( sizePolicy );
    30. m_editorViewTopHorizontalSplitter->setStretchFactor ( 0, 1 );
    31. m_editorViewTopHorizontalSplitter->setStretchFactor ( 1, 1 );
    32. m_editorViewBottomHorizontalSplitter->setFrameShape ( QFrame::Panel );
    33. m_editorViewBottomHorizontalSplitter->setFrameShadow ( QFrame::Raised );
    34. m_editorViewBottomHorizontalSplitter->setOrientation ( Qt::Horizontal );
    35. m_editorViewBottomHorizontalSplitter->setOpaqueResize ( false );
    36.  
    37. // Add the parent QSplitter than holds the other QSplitters to the QGridLayout
    38. m_editorLayout->addWidget ( verticalSplitter, 0, 0, 1, 1 );
    To copy to clipboard, switch view to plain text mode 

    To add the widgets to the splitter i simply use;

    Qt Code:
    1. m_editorViewTopHorizontalSplitter->addWidget ( view1Widget );
    2. m_editorViewTopHorizontalSplitter->addWidget ( view2Widget );
    3. m_editorViewBottomHorizontalSplitter->addWidget ( view3Widget );
    4. m_editorViewBottomHorizontalSplitter->addWidget ( view4Widget );
    To copy to clipboard, switch view to plain text mode 
    Attached Images Attached Images

  2. #2
    Join Date
    Jan 2011
    Location
    Sri Lanaka
    Posts
    64
    Thanks
    39
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Symbian S60

    Default Re: QGraphicsView size incorrect after adding to QSplitter

    Did you try setting the size policy of QGraphicsView?
    or you can set a minimum size for the QGraphicsView + size policy as Expanding.

    note that when you add items to QGraphicsView it will not resize ,but it will add a scroll bar to the view. just like in your image

  3. #3
    Join Date
    Sep 2015
    Posts
    2
    Qt products
    Qt5
    Platforms
    Unix/X11 Windows

    Default Re: QGraphicsView size incorrect after adding to QSplitter

    Thanks for your reply. I have actually tested different size polices and it didn't help.

Similar Threads

  1. qgraphicsview and qsplitter sizing problem
    By hayzel in forum Qt Programming
    Replies: 3
    Last Post: 5th February 2015, 08:50
  2. initial size of widgets in a QSplitter
    By momesana in forum Newbie
    Replies: 3
    Last Post: 12th July 2012, 16:41
  3. QGraphicsView Horizontal Stretch in a QSplitter
    By bassPenguin in forum Qt Programming
    Replies: 4
    Last Post: 12th April 2012, 07:05
  4. Incorrect widget position and size
    By mero in forum Qt Programming
    Replies: 0
    Last Post: 12th April 2011, 04:30
  5. Qt 3 on CentOS 5: page size incorrect
    By agajania in forum Installation and Deployment
    Replies: 0
    Last Post: 1st May 2009, 00:04

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.