Смешивание Qt и Boost
Я ищу запуск проекта на С++ с использованием инфраструктуры Qt 4 (необходим кросс-платформенный графический интерфейс). Я много слышал о библиотеках Boost от друзей и в Интернете. Я начал читать и то и другое, и хотел задать мне беглый вопрос, прежде чем я углубился. Разве эти две системы развития "взаимоисключающие"?
Мой первоначальный поиск и чтение показывают некоторое перекрытие в обработке сигналов, пользовательских системах сборки и других примитивах низкого уровня.
Имеет ли смысл использовать их как в одном проекте?
Ответы
Ответ 1
Да, это имеет смысл. Обычно я предпочитаю использовать функции boost/stdlib, где это возможно, а не их альтернативы Qt.
Это упрощает перенос кода в следующую структуру.
Это облегчает для новых программистов, не относящихся к Qt, получить максимальную скорость.
Boost обладает отличной функциональностью и становится все больше.
note: строки в/из виджетов, вероятно, являются основным исключением. Внутри графического интерфейса я бы использовал строки Qt, чтобы сохранить запутанные приведения везде.
Ответ 2
В этой статье сравнивается механизм сигнальных слотов в QT и Boost:: Signal очень прилично. Это необходимо прочитать для тех, кто немного интересуется этим миром.
Ответ 3
Тем более, что вы переходите на межплатформенную платформу, у вас должна быть хорошо многослойная архитектура, при которой бизнес-логика и доступ к данным максимально удаляются из графического интерфейса. В этом случае было бы целесообразно использовать Boost при написании бэкэнда вашего приложения и только перейти к Qt для интерфейса, с обязательной кучей закладок, сделанных в клее.
Если ваш "движок" отделен от вашего графического интерфейса, вы сможете сменить Qt на что-то еще в будущем (возможно, на родные библиотеки) с минимальными усилиями.
Ответ 4
Мы (Last.fm) используем их оба вместе, хотя мы только начали это делать, и поэтому у нас пока не много опыта. Пока все нормально:)
Ответ 5
Существуют потенциальные проблемы с использованием Boost.Signals вместе с QT. Они описаны в часто задаваемые вопросы Boost.Signals.
Ответ 6
Учтите, что Boost Signals2 доступны, и они являются потокобезопасными.