2008-12-11 3 views
65

Я ищу запуск проекта на C++ с использованием инфраструктуры Qt 4 (необходим кросс-платформенный графический интерфейс). Я много слышал о библиотеках Boost от друзей и в Интернете. Я начал читать и то и другое, и хотел задать мне беглый вопрос, прежде чем я углубился. Разве эти две системы развития «взаимоисключающие»?Смешивание Qt и Boost

В моем первоначальном поиске и чтении показано некоторое перекрытие в обработке сигналов, пользовательских системах сборки и других низкоуровневых примитивах.

Имеет ли смысл использовать их в одном проекте?

ответ

55

Да, это имеет смысл. Обычно я предпочитаю использовать функции boost/stdlib, где это возможно, а не их альтернативы Qt.

Это облегчает перенос кода в следующий каркас.
Это облегчает для новых программистов, отличных от Qt, получить скорость.
Boost обладает отличной функциональностью и получает все больше времени.

примечание: строки в/из виджетов, вероятно, являются главным исключением - внутри графического интерфейса я бы использовал строки Qt, чтобы сохранять запутанные касты повсюду.

+30

Qt также обладает большой функциональностью, а также становится все больше. Qt имеет отличную (лучшую) документацию по сравнению с Boost (основанный на моем опыте использования обоих). Можно было бы утверждать, что использование Boost делает его более сложным для не-Boost-программистов. – sivabudh 2010-03-04 18:56:50

+12

Истина для повышения, но я все равно буду использовать std :: vector и т. Д. По классам коллекции Qt – 2010-11-24 19:27:46

7

Мы (Last.fm) используем их обе вместе, хотя мы только начали это делать, и поэтому у нас пока не много опыта. Пока все хорошо, хотя :)

17

Тем более, что вы идете на кросс-платформу, у вас должна быть хорошо развитая архитектура, с бизнес-логикой и доступом к данным, насколько это возможно, из графического интерфейса. В этом случае было бы целесообразно использовать Boost при написании бэкэнда вашего приложения и только перейти к Qt для интерфейса, с обязательной кучей закладок, сделанных в клее.

Если ваш «двигатель» отделен от вашего графического интерфейса, вы сможете сменить Qt на что-то еще в будущем (возможно, на родные библиотеки) с минимальными усилиями.

3

Существуют потенциальные проблемы с использованием Boost.Signals вместе с QT. Они задокументированы в Boost.Signals FAQ.

31

This paper сравнивает signal slots механизм в QT и Boost::Signal очень прилично. Это необходимо прочитать для тех, кто немного интересуется этим микс.

Смежные вопросы