Returns the first instance of an ancestor from a source widget that satisfies a search criteria. If the passed in source widget does not have any ancestors or if there are no ancestors that satisfy the search criteria, nullptr is returned. The search criteria can be either a functor or lambda that acts as a predicate. It must return a bool and take in a constTSharedRef& as an argument.