Используйте Boost.Signal вместо сигналов Qt? Не обойтись без мока?

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

Кто-нибудь когда-нибудь пробовал? Любые ошибки?

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

Ответы

Ответ 1

Я рассматривал это для одного из моих проектов. Одним из аспектов, который может вас беспокоить, в зависимости от проекта является использование Qt Designer. Qt-Designer создает сигнальные слоты под своими графическими интерфейсами. Итак, если вы пользуетесь дизайнером, вы получите проекты с signals-slots и boost::signals. Есть некоторые проблемы с их использованием вместе f.e. см. этот блог. Несмотря на то, что это возможно для их совместной работы, я бы воздержался от смешивания двух подходов.

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

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

НТН

Ответ 2

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