Boost.Signals允许使用槽的返回值形成信号的返回值的各种策略 。 例如添加它们,形成一个vector ,或返回最后一个。 Qt文档[编辑:以及这个问题的一些答案]中expression的共同的智慧是Qt信号不可能有这样的事情。 但是,当我在以下类定义上运行moc时: class Object : public QObject { Q_OBJECT public: explicit Object( QObject * parent=0 ) : QObject( parent ) {} public Q_SLOTS: void voidSlot(); int intSlot(); Q_SIGNALS: void voidSignal(); int intSignal(); }; moc不仅不抱怨非void返回types的信号,它似乎积极地实现它,以便允许返回值通过: // SIGNAL 1 int Object::intSignal() { int _t0; void *_a[] = { const_cast<void*>(reinterpret_cast<const void*>(&_t0)) }; QMetaObject::activate(this, &staticMetaObject, […]
我知道在boost.org的教程,解决这个: Boost.org信号教程 ,但这些例子不完整,有些过于简化。 那里的例子没有显示包含文件,代码的一些部分有些模糊。 这是我需要的: ClassA引发多个事件/信号 ClassB订阅这些事件(多个类可以订阅) 在我的项目中,我有一个较低级别的消息处理程序类,它将事件引发到对这些消息进行一些处理并通知UI(wxFrames)的业务类。 我需要知道这些所有可能如何连接(按什么顺序,谁称谁等)。