2

我正在尝试使用 Qt5 实现简单的选项卡式界面。我将 QTabWidget 与放置在其选项卡内的 QToolBars 一起使用,并将 QActions 添加到 QToolBars:

关联

下面的工具栏和小部件位于垂直布局中。我希望工具栏自动调整它们的高度以使其高度足以容纳 QToolButtons 内部(最后一个可以显示图标、文本或两者(图标下或右侧的文本),这会影响它们的高度)和自动调整它们的宽度以显示尽可能多的工具按钮,以适应父选项卡的宽度。此外,我希望父选项卡能够自动拉伸或缩小它们的高度,以便能够在其中显示工具栏。在Qt中可能吗?如果是,那么如何?

UPDATE1:水平自动拉伸已经通过使用工具栏作为 QTabWidget 的选项卡小部件来完成。但是垂直的仍然缺失。重要代码(用于 QDesigner):

<widget class="QWidget" name="central_widget">
 <layout class="QVBoxLayout" name="verticalLayout">
  <item>
   <widget class="QTabWidget" name="tabbed_tool_bar">
    <property name="sizePolicy">
     <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
      <horstretch>0</horstretch>
      <verstretch>0</verstretch>
     </sizepolicy>
    </property>
    <widget class="QToolBar" name="tool_tab_game">
     <property name="windowTitle">
      <string>Game ToolTab</string>
     </property>
     <attribute name="title">
      <string>&amp;Game</string>
     </attribute>
     …
    </widget>
    <widget class="QToolBar" name="tool_tab_movement">
     <property name="windowTitle">
      <string>Movement ToolTab</string>
     </property>
     <attribute name="title">
      <string>&amp;Movement</string>
     </attribute>
     …
    </widget>
   </widget>
  </item>
  <item>
   <widget class="QScrollArea" name="scroll_area">
    <property name="sizePolicy">
     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
      <horstretch>0</horstretch>
      <verstretch>0</verstretch>
     </sizepolicy>
    </property>
    <property name="widgetResizable">
     <bool>true</bool>
    </property>
    …
   </widget>
  </item>
 </layout>
</widget>

当前,当窗口垂直调整大小时,选项卡小部件也会垂直调整大小。但我希望它仅根据包含的工具栏的高度调整大小,并在调整父窗口大小时保持其高度。

UPDATE2:预期的垂直自动调整大小是通过将 QTabWidget 垂直大小策略设置为 Fixed 并将垂直大小策略下方的 QScrollArea 设置为 Expanding 来完成的。现在对上面列出的 UI XML 进行了相应的修改。

4

0 回答 0