Хорошо ли работает Qt с STL & Boost? - PullRequest
26 голосов
/ 09 августа 2009

Я заинтересован в изучении Qt. Я довольно хорош с C ++, STL и Boost. Мне очень нравится стиль STL / Boost, и я использую их с C ++ всякий раз, когда могу в проектах uni. Однако я всегда скучаю по GUI. Кажется, что Qt - лучшее решение в моем случае. У Qt хорошая коллекция контейнеров, но я хорошо знаком с STL / Boost.

О чем мне следует заботиться, изучая Qt и используя его вместе с STL / Boost?

Ответы [ 2 ]

32 голосов
/ 09 августа 2009

Да, Qt прекрасно работает как с Boost, так и с STL. Большая часть функциональности STL дублируется в Qt, чтобы гарантировать, что такие функции поддерживаются на всех платформах, которые поддерживают Qt. Тем не менее, ничто не запрещает вам использовать аналоги STL / boost конструкций Qt или их функциональности, которых нет в Qt.

Хотя Qt имеет свои собственные объекты строк, контейнеров и алгоритмов, он также содержит множество функций для совместимости с STL. Например, QString можно преобразовать в std :: string, а QVector можно использовать с std :: for_each. Qt также содержит некоторые функции, которые перекрываются с boost, такие как QPointer (сравните / сопоставьте с std: auto_ptr и boost: shared_ptr).

Статья Создание пользовательских типов Qt может дать некоторое представление об использовании расширенных функций с объектами наддува, таких как передача пользовательских объектов между потоками с подключениями в очереди .

Смотри также:

11 голосов
/ 09 августа 2009

Qt работает довольно хорошо вместе с STL, хотя, как и любой фреймворк, им приходилось заменять некоторые структуры STL по необходимости (единственная, которую вы вынуждены будете использовать, это string / unicode). Все из Boost прекрасно работает - на самом деле это отличная пара наборов инструментов для совместного использования, но вы должны быть осторожны с boost :: сигналов, так как Qt также имеет реализацию сигналов и имена могут перекрываться. Boost освещает это в FAQ , и на сайте trolltech также есть некоторая информация о том, как избежать этой проблемы.

...