While I agree with your overall point, I think that in Qt most of the objects have a reason to exist. E.g. QString, unlike std::string has Unicode support.
std::string with UTF-8 is not a replacement for QString though. std::wstring is actually closer but then you're still going to have to do tons of conversions, and you still don't reach the feature scope of QString.