Использовать Boost.Signal вместо сигналов Qt? Обойтись без мос? - PullRequest
14 голосов
/ 19 января 2010

Я знаю, что их можно использовать вместе, но мне интересно, возможно ли заменить механизм сигналов и слотов Qt на Boost.Signal в частях Qt программы (виджеты и тому подобное).

Кто-нибудь когда-нибудь пробовал это? Есть какие-нибудь ошибки?

Если я не использую другие функции MOC и не заменяю сигналы / слоты на boost.signal, возможно ли обойтись без moc полностью?

Ответы [ 2 ]

4 голосов
/ 19 января 2010

Я рассмотрел это для одного из моих проектов. В зависимости от проекта вас может беспокоить один аспект - использование Qt Designer . Qt-Designer создает сигнальные слоты для своих GUI-соединений. Так что, если вам случится использовать дизайнер, у вас получатся проекты, имеющие signals-slots и boost::signals. Есть некоторые проблемы с их совместным использованием, например. см. этот блог. Хотя они могут работать вместе, я бы воздержался от смешения двух подходов.

Но самая большая проблема, с которой я столкнулся, заключалась в том, что boost::signals не являются поточно-ориентированными, тогда как Qt signal-slot - это! Поэтому это было легкое решение для меня, так как мой проект был многопоточным.

Вы можете получить относительные достоинства и недостатки подхода, принятого boost и Qt из Page-11 из this PDF.

НТН

3 голосов
/ 19 января 2010

Я не думаю, что это то, что вы хотите сделать. Сигналы Qt глубоко интегрированы в структуру, и как они генерируются и обрабатываются. Не трать свое время:)

...