Растяжение виджетов, находящихся в QGridLayout, вместе с растяжением окна QDialog

Каким образом виджеты внутри QGridLayout будут растягиваться вместе с окном, когда я его растягиваю мышкой?

Пробовал установить setSizePolicy для каждого отдельного элемента, на что элемент просто распирало в рамках, которые установлены в Qt Designer элементом QGridLayout.

class Ui_Form(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(650, 420)
        Dialog.setMinimumSize(650,420)
        self.gridLayoutWidget = QtWidgets.QWidget(Dialog)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 20, 630, 390))
        self.gridLayoutWidget.setObjectName("gridLayoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
        self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize)
        self.gridLayout.setContentsMargins(5, 5, 5, 5)
        self.gridLayout.setHorizontalSpacing(0)
        self.gridLayout.setVerticalSpacing(8)
        self.gridLayout.setObjectName("gridLayout")
        self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 0, 2, 1, 1)

Ответы (2 шт):

Автор решения: Валера Римский

Решил тем что переписал ui на QMainWindow и добавил gridLayout как centralWidget Окно при растяжении стало показывать все растягивающиеся элементы

→ Ссылка
Автор решения: S. Nick

Попробуйте так:

import sys
from PyQt5 import QtWidgets, QtGui, QtCore, uic


class Ui_Form(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(650, 420)
#        Dialog.setMinimumSize(650,420)

        self.gridLayoutWidget = QtWidgets.QWidget(Dialog)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 20, 630, 390))
        self.gridLayoutWidget.setObjectName("gridLayoutWidget")
        
#        self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
# --------------------------------------------> vvvvvv <---------------------------
        self.gridLayout = QtWidgets.QGridLayout(Dialog)                   # !!! +++
        
        self.layout = QtWidgets.QGridLayout(self.gridLayoutWidget)        # !!! +++
        
# ???        self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize)
        self.gridLayout.setContentsMargins(5, 5, 5, 5)
        self.gridLayout.setHorizontalSpacing(0)
        self.gridLayout.setVerticalSpacing(8)
        self.gridLayout.setObjectName("gridLayout")
        
        self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget)
        self.label_4.setObjectName("label_4")
        self.label_4.setAlignment(QtCore.Qt.AlignCenter)                   # +++
        self.label_4.setWordWrap(True)                                     # +++
        
#        self.gridLayout.addWidget(self.label_4, 0, 2, 1, 1)
        self.layout.addWidget(self.label_4, 0, 2, 1, 1)                    # +++
        self.gridLayout.addWidget(self.gridLayoutWidget, 0, 2, 1, 1)       # +++


class MainWindow(QtWidgets.QDialog, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.setStyleSheet("background-color: #ff5555")
        self.gridLayoutWidget.setStyleSheet("background-color: #0097ff")
        self.label_4.setStyleSheet("background-color: #609772")
        self.label_4.setText('1234567 2342344234 2234 234')


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    app.setFont(QtGui.QFont("Times", 15))
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка