Как уже было написано, можете использовать компоновщики (layout), компоновать элементы по горизонтали/вертикали/сетке; есть еще такая штука как layoutStretch, сам не пользовался, но согласно докам - Stretch factors are used to change how much space widgets are given in proportion to one another.; также чтобы размеры виджета изменялись/оставались прежними, используйте sizePolicy (горизонтальную/вертикальную).
На самый худой конец, можете задавать новые размеры виджетов на форме, переопределив resizeEvent().