我希望能够通过网络发送Qt信号。使用Qt的元类型系统,序列化信号调用非常简单:
我有什么遗漏吗?还是有更好/替代的方法来做到这一点?
[1] 更进一步的问题:如何确保使用
- 使用静态方法
::fromSignal
创建一个qMetaMethod
- 使用创建的元方法获取方法名称、参数名称、它们的typeIds
[1]
和值。 - 将所有内容打包到您喜欢的格式(JSON、XML)中并发送它。
QMetaObject :: invokeMethod(..)
接受字符串形式的信号/方法名称。问题在于参数:它们必须作为QGenericArgument
提供,并且只能通过使用需要实际类型(而不是它的名称字符串或typeId
)和相关值的Q_ARG
宏来创建这些对象。此外,参数数量必须在编译时定义,没有可以接受参数列表的invokeMethod(..)
。我有什么遗漏吗?还是有更好/替代的方法来做到这一点?
[1] 更进一步的问题:如何确保使用
Q_DECLARE_METATYPE(..)
注册类型时始终获得相同的typeId?