#ifndef COCKATRICE_QT_UTILS_H #define COCKATRICE_QT_UTILS_H #include namespace QtUtils { template T *findParentOfType(const QObject *obj) { const QObject *p = obj ? obj->parent() : nullptr; while (p) { if (auto casted = qobject_cast(const_cast(p))) { return casted; } p = p->parent(); } return nullptr; } static inline void clearLayoutRec(QLayout *l) { if (!l) return; QLayoutItem *it; while ((it = l->takeAt(0)) != nullptr) { if (QWidget *w = it->widget()) w->deleteLater(); if (QLayout *sub = it->layout()) clearLayoutRec(sub); delete it; } } } // namespace QtUtils #endif // COCKATRICE_QT_UTILS_H