diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h index f24ad579770..3d0b9a6acb4 100644 --- a/src/libs/utils/algorithm.h +++ b/src/libs/utils/algorithm.h @@ -32,6 +32,7 @@ #include #include +#include #include namespace Utils @@ -371,6 +372,21 @@ C filteredUnique(const C &container) return result; } +////////////////// +// qobject_container_cast +///////////////// +template class Container, typename Base> +Container qobject_container_cast(const Container &container) +{ + Container result; + auto ins = inserter(result); + for (Base val : container) { + if (T target = qobject_cast(val)) + ins = target; + } + return result; +} + ////////////////// // sort /////////////////