I guess the underlying problem is that C++ doesn't have a standardized ABI. So you get things like QStrings, etc.
When C++ got introduced, it used only C standard library, so everyone wrote their own library.
C++ was already 10 years old when C++98 was a thing and compilers still needed to catch up.
You don't re-write old code just because, so this cruft shows everywhere.