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;
m_editorLayout
= new QGridLayout ( editorGridViewParentWidget
);
m_editorLayout->setObjectName ( QStringLiteral ( "gridLayout" ) );
QSplitter* verticalSplitter
= new QSplitter ( m_stackedWidgetUI.
editorGridViewParentWidget );
verticalSplitter->setObjectName ( QStringLiteral ( "verticalSplitter" ) );
verticalSplitter->setAutoFillBackground ( false );
verticalSplitter
->setFrameShape
( QFrame::Panel );
verticalSplitter
->setFrameShadow
( QFrame::Raised );
verticalSplitter->setMidLineWidth ( 0 );
verticalSplitter->setOrientation ( Qt::Vertical );
verticalSplitter->setOpaqueResize ( false );
m_editorViewTopHorizontalSplitter
= new QSplitter ( verticalSplitter
);
m_editorViewBottomHorizontalSplitter
= new QSplitter ( verticalSplitter
);
m_editorViewTopHorizontalSplitter->setObjectName ( QStringLiteral ( "topHorizontalSplitter" ) );
sizePolicy.setHorizontalStretch ( 1 );
sizePolicy.setVerticalStretch ( 0 );
sizePolicy.setHeightForWidth ( m_editorViewTopHorizontalSplitter->sizePolicy().hasHeightForWidth() );
m_editorViewTopHorizontalSplitter->setSizePolicy ( sizePolicy );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 0, 1 );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 1, 1 );
m_editorViewTopHorizontalSplitter
->setFrameShape
( QFrame::Panel );
m_editorViewTopHorizontalSplitter
->setFrameShadow
( QFrame::Raised );
m_editorViewTopHorizontalSplitter->setMidLineWidth ( 0 );
m_editorViewTopHorizontalSplitter->setOrientation ( Qt::Horizontal );
m_editorViewTopHorizontalSplitter->setOpaqueResize ( false );
m_editorViewBottomHorizontalSplitter->setObjectName ( QStringLiteral ( "bottomHorizontalSplitter" ) );
sizePolicy.setHeightForWidth ( m_editorViewBottomHorizontalSplitter->sizePolicy().hasHeightForWidth() );
m_editorViewBottomHorizontalSplitter->setSizePolicy ( sizePolicy );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 0, 1 );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 1, 1 );
m_editorViewBottomHorizontalSplitter
->setFrameShape
( QFrame::Panel );
m_editorViewBottomHorizontalSplitter
->setFrameShadow
( QFrame::Raised );
m_editorViewBottomHorizontalSplitter->setOrientation ( Qt::Horizontal );
m_editorViewBottomHorizontalSplitter->setOpaqueResize ( false );
// Add the parent QSplitter than holds the other QSplitters to the QGridLayout
m_editorLayout->addWidget ( verticalSplitter, 0, 0, 1, 1 );
m_editorLayout = new QGridLayout ( editorGridViewParentWidget );
m_editorLayout->setObjectName ( QStringLiteral ( "gridLayout" ) );
QSplitter* verticalSplitter = new QSplitter ( m_stackedWidgetUI.editorGridViewParentWidget );
verticalSplitter->setObjectName ( QStringLiteral ( "verticalSplitter" ) );
verticalSplitter->setAutoFillBackground ( false );
verticalSplitter->setFrameShape ( QFrame::Panel );
verticalSplitter->setFrameShadow ( QFrame::Raised );
verticalSplitter->setMidLineWidth ( 0 );
verticalSplitter->setOrientation ( Qt::Vertical );
verticalSplitter->setOpaqueResize ( false );
m_editorViewTopHorizontalSplitter = new QSplitter ( verticalSplitter );
m_editorViewBottomHorizontalSplitter = new QSplitter ( verticalSplitter );
m_editorViewTopHorizontalSplitter->setObjectName ( QStringLiteral ( "topHorizontalSplitter" ) );
QSizePolicy sizePolicy ( QSizePolicy::Preferred, QSizePolicy::Preferred );
sizePolicy.setHorizontalStretch ( 1 );
sizePolicy.setVerticalStretch ( 0 );
sizePolicy.setHeightForWidth ( m_editorViewTopHorizontalSplitter->sizePolicy().hasHeightForWidth() );
m_editorViewTopHorizontalSplitter->setSizePolicy ( sizePolicy );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 0, 1 );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 1, 1 );
m_editorViewTopHorizontalSplitter->setFrameShape ( QFrame::Panel );
m_editorViewTopHorizontalSplitter->setFrameShadow ( QFrame::Raised );
m_editorViewTopHorizontalSplitter->setMidLineWidth ( 0 );
m_editorViewTopHorizontalSplitter->setOrientation ( Qt::Horizontal );
m_editorViewTopHorizontalSplitter->setOpaqueResize ( false );
m_editorViewBottomHorizontalSplitter->setObjectName ( QStringLiteral ( "bottomHorizontalSplitter" ) );
sizePolicy.setHeightForWidth ( m_editorViewBottomHorizontalSplitter->sizePolicy().hasHeightForWidth() );
m_editorViewBottomHorizontalSplitter->setSizePolicy ( sizePolicy );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 0, 1 );
m_editorViewTopHorizontalSplitter->setStretchFactor ( 1, 1 );
m_editorViewBottomHorizontalSplitter->setFrameShape ( QFrame::Panel );
m_editorViewBottomHorizontalSplitter->setFrameShadow ( QFrame::Raised );
m_editorViewBottomHorizontalSplitter->setOrientation ( Qt::Horizontal );
m_editorViewBottomHorizontalSplitter->setOpaqueResize ( false );
// Add the parent QSplitter than holds the other QSplitters to the QGridLayout
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;
m_editorViewTopHorizontalSplitter->addWidget ( view1Widget );
m_editorViewTopHorizontalSplitter->addWidget ( view2Widget );
m_editorViewBottomHorizontalSplitter->addWidget ( view3Widget );
m_editorViewBottomHorizontalSplitter->addWidget ( view4Widget );
m_editorViewTopHorizontalSplitter->addWidget ( view1Widget );
m_editorViewTopHorizontalSplitter->addWidget ( view2Widget );
m_editorViewBottomHorizontalSplitter->addWidget ( view3Widget );
m_editorViewBottomHorizontalSplitter->addWidget ( view4Widget );
To copy to clipboard, switch view to plain text mode
Bookmarks