freecad 窗口控件层级关系
主窗口下的 QMainWindow 对象层次关系:
1.1. QMainWindow
1.1.2. QLayout
1.1.2. QStackedWidget
1.1.2.3. QStackedLayout
1.1.2.3. QGraphicsView
1.1.2.3.4. QWidget
1.1.2.3.4.5. QScrollBar
1.1.2.3.4.5. QBoxLayout
1.1.2.3.4. QWidget
1.1.2.3.4.5. QScrollBar
1.1.2.3.4.5. QBoxLayout
1.1.2.3.4. QGraphicsScene
1.1.2.3.4.5. QObject
1.1.2.3.4. QOpenGLWidget
1.1.2.3.4. QObject
1.1.2.3.4. QObject
1.1.2. QTimer
import FreeCADGui
from PySide2 import QtWidgets
def print_hierarchy(obj, level=0, parent_index=""):
if parent_index:
current_index = f"{parent_index}.{level + 1}"
else:
current_index = str(level + 1)
print(f"{current_index}. {obj.__class__.__name__}")
children = obj.children()
if children:
for i, child in enumerate(children, start=1):
child_index = f"{current_index}.{i}"
print_hierarchy(child, level + 1, current_index)
if __name__ == "__main__":
# 获取主窗口
main_window = FreeCADGui.getMainWindow()
if main_window:
# 查找所有 QMainWindow 对象
qmainwindow_objects = main_window.findChildren(QtWidgets.QMainWindow)
print("主窗口下的 QMainWindow 对象层次关系:")
for i, qmainwindow in enumerate(qmainwindow_objects, start=1):
print_hierarchy(qmainwindow, 0, str(i))
else:
print("未获取到主窗口")