2015-12-07 2 views
0

Dans la première image, j'ai conçu un prototype. Le MainWindow comprend un widget et trois cadres. Le cadre central a un autre cadre, et quand je cours dans l'application en plein écran il y a un problème de taille dans le cadre central, comme vous pouvez le voir dans la deuxième image. Je veux centrer le cadre dans son cadre. Comment puis je faire ça?Centraliser une image dans une autre image dans QT Designer

first picture second picture

+0

Quelles dispositions utilisez-vous? pouvez-vous fournir du code? –

+0

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? –

Répondre

0

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.

+0

J'ai vraiment compris le mécanisme. Merci beaucoup !! –

+0

Je ne sais pas si vous avez lu la dernière édition de ma réponse. Jetez un coup d'oeil à et cela va résoudre votre problème. –

+0

Oui je vois maintenant et ça va être mieux. Encore merci !! –