Vous pouvez le faire facilement de Qt Designer. Il suffit d'ajouter un autre Mise en page horizontale dans le milieu Cadre. Alors donnez votre Widget dans la mise en page, allez dans le gestionnaire d'objets , appelez le menu contextuel de votre widget, cliquez Mise en page et choisissez l'alignementCentre horizontalement.
Voici le fichier .ui que je viens de créer pour vérifier votre problème:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>965</width>
<height>502</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_3">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget_2">
<property name="geometry">
<rect>
<x>9</x>
<y>9</y>
<width>291</width>
<height>411</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item alignment="Qt::AlignHCenter|Qt::AlignVCenter">
<widget class="QListWidget" name="listWidget"/>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>965</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
Edition 1: Fondamentalement, l'exemple ci-dessus, je réussi à reproduire votre bug. J'ai ajouté la disposition horizontale à l'intérieur du cadre central, mais tout en changeant la taille du widget central a aligné sur le côté gauche.
La réponse à votre question est ici: Make QHorizontalLayout expand inside QFrame
Vous devez ajouter la mise en page horizontale dans votre milieu Cadre. Ensuite, vous devez appeler le menu contextuel du cadre intermédiaire, cliquez sur Mise en page -> Mise en page horizontale. Ajoutez votre widget dans la mise en page. Très probablement, votre widget étendra sa largeur à la largeur de la fenêtre principale. Changez SizePolicy à fixed. À ce stade, votre problème devrait être résolu.
Quelles dispositions utilisez-vous? pouvez-vous fournir du code? –
Dans la fenêtre principale j'ai utilisé la disposition horizontale, mais dans le cadre central je n'ai pas utilisé la disposition. Comment puis-je vous donner du code? Si tu veux, je peux te donner un fichier .ui ou .py? –