void PinConfig::clearOutConfig() { QLayout *groupBoxLayout = this->subConfigGroupBox->layout(); if (!groupBoxLayout) return; while (!groupBoxLayout->isEmpty()) { QWidget *widget = groupBoxLayout->itemAt(0)->widget(); groupBoxLayout->removeWidget(widget); delete widget; } delete groupBoxLayout; }
void LayoutDumper::dumpWidgetAndChildren(QDebug& os, const QWidget* w, int level) { QString padding; for (int i = 0; i <= level; i++) { padding += " "; // 4 spaces per level } QLayout* layout = w->layout(); QList<QWidget*> dumped_children; if (layout && !layout->isEmpty()) { os << padding << "Layout: " << getLayoutInfo(layout); QBoxLayout* box_layout = dynamic_cast<QBoxLayout*>(layout); if (box_layout) { os << ", spacing " << box_layout->spacing(); } os << ":\n"; int num_items = layout->count(); for (int i = 0; i < num_items; i++) { QLayoutItem* layout_item = layout->itemAt(i); QString item_info = getLayoutItemInfo(layout_item); if (!item_info.isEmpty()) { os << padding << "- " << item_info << "\n"; } QWidgetItem* wi = dynamic_cast<QWidgetItem*>(layout_item); if (wi && wi->widget()) { dumpWidgetAndChildren(os, wi->widget(), level + 1); dumped_children.push_back(wi->widget()); } } } // now output any child widgets that weren't dumped as part of the layout QList<QWidget*> widgets = w->findChildren<QWidget*>( QString(), Qt::FindDirectChildrenOnly); QList<QWidget*> undumped_children; foreach (QWidget* child, widgets) { if (dumped_children.indexOf(child) == -1) { undumped_children.push_back(child); } } if (!undumped_children.empty()) { os << padding << "Non-layout children:\n"; foreach (QWidget* child, undumped_children) { dumpWidgetAndChildren(os, child, level + 1); }