Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
[solved] Center QWidget in QLayout
I have a QGraphicsView in a QVBoxLayout (the only item) and that layout is set to the central widget of a QMainWindow. The QGraphicsView is set to a fixed size and is smaller than the QMainWindow. The layout is doing it's magic fine and the QGraphicsView is perfectly centered. [Image 1]
So far so good. Now I do a resize() event on the QGraphicsView. The widget is being resized correctly but now it sticks to the upper left corner of the layout. [Image 2]
How can I fix this? I want the QGraphicsView widget to be centered as in the initial state all the time.
Can you post the code that sets the layout, adds the widget to the layout, sets the fixed size and calls resize? My guess is that you don't set a layout or the central widget properly or the graphics view somehow becomes layoutless (if that's even a word).
When adding the widget make sure you pass Qt::AlignCenter to the addWidget() call of the layout.
If you set the size using setFixedSize() then resize() won't work. You can call setFixedSize() again.
Thank you very much for your quick answer. Here's the related code:
I did layout->setAlignment(Qt::AlignCenter) before but then just the upper left corner of the widget is at the center of the layout. What I actually need is that the center of the widget is at the center of the layout.
bq. I did layout->setAlignment(Qt::AlignCenter) before
This sets the alignment of the layout, not the widget inside it. Instead set the alignment when you add the widget to the layout:
layout->addWidget(_activeDisplayPageView, 0, Qt::AlignCenter);
Also setFixedSize() is basically calling setMinimumSize and setMaximumSize with the same value so you can replace this:
setMinimumSize(QSize( 10, 10));
Using setFixedSize() instead of what I did fixed the problem!
Thank you very much for your help. I appreciate it a lot!