我尝试添加多个表格化的QDockWidgets,但是以某种方式我只需要同时停靠。
MWE代码:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class DockWindow(QDockWidget):
def __init__(self, parent, name):
super().__init__(parent)
parent.addDockWidget(Qt.TopDockWidgetArea, self)
self.setWindowTitle(name)
child = parent.findChildren(DockWindow)
if len(child) > 1:
parent.tabifyDockWidget(self, child[0])
self.raise_()
app = QApplication(sys.argv)
main = QMainWindow()
for i in range(10):
DockWindow(main, str(i))
main.show()
sys.exit(qApp.exec_())
最佳答案
根据docs:
无效的QMainWindow :: tabifyDockWidget(QDockWidget *首先,QDockWidget *
第二)
将第二个停靠小部件移到第一个停靠小部件的顶部,创建一个
主窗口中的选项卡式停靠区域。
根据第一个参数的结论,必须是初始的QDockWidget
(如果有的话是child[0]
),第二个必须是新的QDockWidget
(在您的情况下是self
)。该问题通过更改来解决:
parent.tabifyDockWidget(self, child[0])
至:
parent.tabifyDockWidget(child[0], self)
屏幕截图: