PYQT5 - QToolBar浮动时如何保持布局

PYQT5 - How to keep layout when QToolBar is floating

我的 QToolbar 有问题。

我得到了一个 QToolBar 并在其中使用了一个 QVBoxLayout 来配置我的 QPushButtons。

我的问题是当我在 QVBoxLayout 周围浮动我的 ToolBar 时失去了它的布局。我把它放回码头后,布局恢复正常。

我想知道是否有任何方法可以在任何情况下修复相同的布局。

我尝试为每个状态实现两种不同的布局,固定和浮动,但也没有用。

我找到的唯一方法是忘记 QToolBar 并重新实现我自己的个性化 QWidget 并模拟我自己的 ToolBar 所以它工作得很好。

您不应更改 QToolBar 的布局。它管理自己的布局,这样做有点破坏它。

QToolBar 是一个高级小部件,它使用 QActions 处理其内容。您需要在您的应用程序中创建操作,并使用 addAction()insertAction().

添加这些操作

样式化 QToolBar 应该通过子类化您当前的 QStyle(困难)或使用样式表(简单)

QToolBar 负责自己的布局,您不必担心。您应该添加操作或小部件,它会根据方向自动水平或垂直布置项目。

QToolBar Doc:

Toolbar buttons are added by adding actions, using addAction() or insertAction(). Groups of buttons can be separated using addSeparator() or insertSeparator(). If a toolbar button is not appropriate, a widget can be inserted instead using addWidget() or insertWidget(). Examples of suitable widgets are QSpinBox, QDoubleSpinBox, and QComboBox.

例如,以下代码片段生成以下布局:

ui->mainToolBar->addWidget(new QPushButton("A"));
ui->mainToolBar->addWidget(new QPushButton("B"));
ui->mainToolBar->addWidget(new QPushButton("C"));
  • 水平:

  • 垂直:

  • 浮动: