Qt 解析復雜對象構成 dumpStructure
如 QComboBox / QCalendarWidget / QSpinBox …
void Widget::Widget(QWidget* parent){auto c = new QCalendarWidget(this);dumpStructure(c,4);
}void Widget::dumpStructure(const QObject *obj, int spaces)
{qDebug() << QString("%1%2 : %3").arg("", spaces).arg(obj->metaObject()->className()).arg(obj->objectName());QObjectList list = obj->children();for (auto v : list) {dumpStructure(v, spaces + 4);}
}
輸出
QCalendarWidget : calendarWidget"QVBoxLayout : "QCalendarModel : "{QCalendarView : qt_calendar_calendarview"QWidget : qt_scrollarea_viewport"QWidget : qt_scrollarea_hcontainer"QScrollBar : "QBoxLayout : "QWidget : qt_scrollarea_vcontainer"QScrollBar : "QBoxLayout : "QStyledItemDelegate : "QHeaderView : "QWidget : qt_scrollarea_viewport"QWidget : qt_scrollarea_hcontainer"QScrollBar : "QBoxLayout : "QWidget : qt_scrollarea_vcontainer"QScrollBar : "QBoxLayout : "QItemSelectionModel : "QHeaderView : "QWidget : qt_scrollarea_viewport"QWidget : qt_scrollarea_hcontainer"QScrollBar : "QBoxLayout : "QWidget : qt_scrollarea_vcontainer"QScrollBar : "QBoxLayout : "QItemSelectionModel : "QTableCornerButton : "QItemSelectionModel : "}{QWidget : qt_calendar_navigationbar"QPrevNextCalButton : qt_calendar_prevmonth"QPrevNextCalButton : qt_calendar_nextmonth"QToolButton : qt_calendar_monthbutton"QMenu : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QAction : "QToolButton : qt_calendar_yearbutton"QSpinBox : qt_calendar_yearedit"QLineEdit : qt_spinbox_lineedit"QWidgetLineControl : "QValidator : qt_spinboxvalidator"QHBoxLayout : "}QCalendarDelegate : "QCalendarTextNavigator :