We had a discussion a few months ago, that qmake splits qt modules across 2 pri files: qt_lib_foo.pri and qt_lib_foo_private.pri.
In CMake we do that distinction on the target level, but not on the package level. Both Qt::Foo and Qt::FooPrivate become available when doing find_package(Qt6Foo).
Instead we should investigate trying to split the Qt::FooPrivate target into its own Qt6FooPrivate package backed by Qt6FooPrivateConfig.cmake.
This would more cleanly separate the availability of the targets, ensuring that users really acknowledge into finding and using the private packages (and targets)