«Как QT использует C ++ только для создания пользовательских графических интерфейсов для многих платформ?»
«Использует ли он API-интерфейсы каждой платформы ...?»
Вы ответили на свой вопрос. Это делает общую библиотеку для разработчиков, с которой они могут писать свои приложения. Разработчики приложения пишут свое приложение только один раз, не заботясь о специфике платформы. Затем автор библиотеки выпускает разные версии библиотеки для каждой платформы, которая обрабатывает все конкретные вызовы пользовательского интерфейса. Это называется инкапсуляция:
http://en.wikipedia.org/wiki/Information_hiding#Encapsulation
Если бы вы написали свою собственную такую библиотеку, вам нужно было бы выяснить, что общего между всеми платформами, на которые вы ориентируетесь, или выяснить, какие высокоуровневые концепции понадобятся вашему приложению, и создать эту абстракцию. Затем внедрите эту абстракцию для каждой платформы, которую вы хотите поддерживать.
Изменить:
Также см. Комментарий Джулиано. Кажется, что это может быть ближе к тому, что вы хотите сделать, а не к вопросу, который вы задали. Я бы не стал делать ту работу, которую проделали Trolltech, команда WxWidgets, ребята из Gtk или люди из Mono, если бы я мог этого избежать.