Mieszanie Qt i Boost

Patrzę na rozpoczęcie projektu w C++ przy użyciu frameworka Qt 4 (wymagany jest wieloplatformowy GUI). Słyszałem świetne rzeczy o bibliotekach Boost od znajomych i online. Zacząłem czytać o obu i chciałem zadać pobieżne pytanie, zanim przejdę zbyt głęboko: czy te dwa "systemy" rozwoju się wykluczają?

Moje wstępne wyszukiwanie i czytanie pokazuje pewne nakładanie się w obsłudze sygnału, niestandardowych systemach budowania i innych prymitywach niskiego poziomu.

Czy to czy warto używać ich obu w tym samym projekcie?

 66
Author: tonytonov, 2008-12-11

6 answers

Tak, to ma sens. Generalnie wolałbym używać funkcji boost/stdlib tam, gdzie to możliwe, niż ich alternatyw Qt.

Ułatwia to przenoszenie kodu do następnego frameworka.
Ułatwia to Nowym programistom spoza Qt uzyskanie maksymalnej prędkości.
Boost ma kilka świetnych funkcji i jest coraz więcej cały czas.

Uwaga: ciągi do / z widgetów są prawdopodobnie głównym wyjątkiem - wewnątrz GUI użyłbym łańcuchów Qt, aby zapisać mylące odlewy wszędzie.

 54
Author: Martin Beckett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-06 02:00:41

Ten artykuł porównuje mechanizm slotów sygnałowych w QT i Boost::Signal bardzo przyzwoicie. Jest to lektura obowiązkowa dla tych, którzy są nieco ciekawi tej mieszanki.

 31
Author: Özgür,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-01 19:59:38

Zwłaszcza, że masz zamiar cross-platform, powinieneś mieć ładnie warstwową architekturę, z logiką biznesową i dostępem do danych jak najbardziej usunięte z GUI. W tym przypadku sensowne byłoby użycie Boost podczas pisania backendu aplikacji i przejście tylko do Qt dla frontendu, z obowiązkowym stosem odlewów wykonanych w kleju.

Jeśli twój "silnik" jest oddzielony od Twojego GUI, będziesz mógł zamienić Qt na coś innego w przyszłości (natywny bibliotek) przy minimalnym wysiłku.

 17
Author: Tiberiu Ana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-26 11:02:10

We (Last.fm) używać ich obu razem, choć dopiero zaczęliśmy to robić, a więc nie mamy jeszcze dużego doświadczenia. Póki co wszystko jest w porządku:)

 7
Author: mxcl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-12 12:41:56

Istnieją potencjalne problemy z użyciem Boost.Sygnały obok QT. Są one udokumentowane w Boost.Sygnały FAQ .

 3
Author: Daniel James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-04 16:25:52

Weź pod uwagę, że Boost Signals2 są dostępne i są bezpieczne dla wątków.

 3
Author: Pietro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-18 13:57:19