我尝试添加多个表格化的QDockWidgets但不知何故我只能同时停靠。
mwe code:
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_())
答案 0 :(得分:1)
根据docs:
void QMainWindow :: tabifyDockWidget(QDockWidget * first,QDockWidget * 第二)强>
将第二个停靠窗口小部件移动到第一个停靠窗口小部件的顶部,创建一个 主窗口中的标签式停靠区域。
根据您的案例QDockWidget
,第一个参数中的结论必须是初始child[0]
,如果有QDockWidget
,则新self
。通过改变来解决问题:
parent.tabifyDockWidget(self, child[0])
为:
parent.tabifyDockWidget(child[0], self)
截图: