如何将小部件“粘贴”到扩展窗口的底部?

时间:2016-10-24 18:45:58

标签: c++ qt qt4 qt-creator

我有一堆标准的qt creator拖动控件,我在窗口的底部。我有一个表格小部件,我想垂直扩展,以便在窗口向下扩展时显示模式行,如果向上扩展到最小值则更少。我希望所有其他小部件在边缘移动时粘在窗口的底部。我正在使用Qt Creator 2.1.0和Qt 4.7,我没有看到任何可以做我需要的小部件的标志,谷歌也没有真正发现任何有启发性的东西。也许它与将小部件放在一个移动和/或伸展的容器中有关?现在,他们只是在MainWindow上。

3 个答案:

答案 0 :(得分:2)

只需设置垂直布局,为其添加间隔,然后添加小部件。 spacer将把你的小部件一直推下来。此外,您可能想要使用尺寸政策。

答案 1 :(得分:1)

很难从你的问题中知道你想要做什么,但也许你正在寻找QSplitter

或者,您可以为QWidget指定各种QLayout,例如QHBoxLayoutQVBoxLayoutQGridLayout等。可以在布局中添加各种小部件指定,然后在QWidget上设置布局,因此它充当您添加到布局的窗口小部件的容器。在将小部件添加到布局时,可以设置拉伸和对齐标记。

答案 2 :(得分:1)

只有在需要对接功能时才应使用QMainWindow。否则,只需使用普通QWidget。没有通用的子窗口小部件可以“卡在”QMainWindow上。它们需要属于中央窗口小部件。您最有可能需要做的是为表格小部件设置Expanding垂直大小策略。设计师应该默认执行此操作。这是一个例子:

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QTableWidget" name="table">
      <row>
       <property name="text">
        <string>1</string>
       </property>
      </row>
      <column>
       <property name="text">
        <string>Name</string>
       </property>
      </column>
      <item row="0" column="0">
       <property name="text">
        <string>fyngyrz</string>
       </property>
      </item>
     </widget>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QPushButton" name="foo">
        <property name="text">
         <string>Foo</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="bar">
        <property name="text">
         <string>Bar</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>