如何将小部件"stick"到扩展窗口的底部?

How to "stick" widgets to bottom of an expanding window?

本文关键字:扩展 窗口 底部 stick 小部      更新时间:2023-10-16

我有一堆标准qt creator拖拽控件,我在一个窗口的底部。我有一个表小部件,我想垂直展开,以便能够显示更多的行,如果窗口向下展开,如果向上扩展到最小。我希望当窗口边缘移动时,所有其他小部件都粘在窗口底部。我使用的是Qt Creator 2.1.0和Qt 4.7,我没有看到任何标记,这些小部件可以满足我的需要,谷歌也没有真正找到任何有启发性的东西。也许它与将小部件放在移动和/或拉伸的容器中有关?

只需设置一个垂直布局,添加一个间隔符,然后是您的小部件。这个间隔符会把你的小部件一直往下推。另外,您可能想要摆弄一下大小策略。

只有在需要其对接功能时才应使用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>

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

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