在 PyQt5 中连接多个 QSplitter

Concatenate Multiple QSplitter in PyQt5

我有 3 个 QWidget,我想连接它们。基本上它应该是这样的:

           |           |
           |           |
QWidget 1  | QWidget 2 | QWidget 3
           |           |
           |           |
       QSplitter1  QSplitter2

到目前为止我尝试的是:

1) 将每个widget添加到对应的QSplitter

widget1 = QWidget()
widget2 = QWidget()
widget3 = QWidget()

splitter1 = QSplitter(self)
splitter2 = QSplitter(self)

splitter1.addWidget(widget1)
splitter1.addWidget(widget2)

splitter2.addWidget(widget2)
splitter2.addWidget(widget3)

这里我得到一个可移动的分离器,应该是splitter2

2) 将完整的 splitter1 小部件作为第一个参数添加到 splitter2

widget1 = QWidget()
widget2 = QWidget()
widget3 = QWidget()

splitter1 = QSplitter(self)
splitter2 = QSplitter(self)

splitter1.addWidget(widget1)
splitter1.addWidget(widget2)

splitter2.addWidget(splitter1)
splitter2.addWidget(widget3)

这里只有第一个分离器是活动的。

这样做的正确方法是什么?

QSplitter 是一个 container 小部件,它的行为类似于 QBoxLayout,增加了调整项目大小的可能性。这意味着您(通常)只需要一个分离器,无论您在同一方向添加多少个小部件。

你说的"splitters",其实就是拆分器handlesQSplitterHandle类),所以结构其实是这个:

QSplitter -------------------------------------+
|               |               |              |
h               H               H              |
a               A               A              |
n               N               N              |
d   QWidget 1   D   QWidget 2   D  QWidget 3   |
l               L               L              |
e               E               E              |
|               |               |              |
+---------------+---------------+--------------+

所以,就这么简单:

widget1 = QWidget()
widget2 = QWidget()
widget3 = QWidget()

splitter = QSplitter(self)
splitter.addWidget(widget1)
splitter.addWidget(widget2)
splitter.addWidget(widget3)