我正在尝试使用 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>&Game</string>
</attribute>
…
</widget>
<widget class="QToolBar" name="tool_tab_movement">
<property name="windowTitle">
<string>Movement ToolTab</string>
</property>
<attribute name="title">
<string>&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 进行了相应的修改。