Qt 记录排队连接
我正在使用Qt5.4构建的复杂状态引擎系统(使用自定义状态引擎类) 代码的一部分是记录事件、转换等。记录引擎/状态对象接收到的所有事件对我来说非常重要,这样我就可以完全跟踪状态引擎中发生的事情 对于大多数事件类型,日志记录很容易。但是,我未能记录排队连接(即元调用事件)。QMetaCallEvent是私有的,所以我无能为力。然而,很难相信Qt的这样一个组成部分不能被正确检查Qt 记录排队连接,qt,logging,signals-slots,qevent,queued-connection,Qt,Logging,Signals Slots,Qevent,Queued Connection,我正在使用Qt5.4构建的复杂状态引擎系统(使用自定义状态引擎类) 代码的一部分是记录事件、转换等。记录引擎/状态对象接收到的所有事件对我来说非常重要,这样我就可以完全跟踪状态引擎中发生的事情 对于大多数事件类型,日志记录很容易。但是,我未能记录排队连接(即元调用事件)。QMetaCallEvent是私有的,所以我无能为力。然而,很难相信Qt的这样一个组成部分不能被正确检查 是否有我错过的方法允许记录排队连接(包括信号名称、插槽名称、发送方名称、接收方名称和参数,如果可能)?安装事件筛选器并使用
是否有我错过的方法允许记录排队连接(包括信号名称、插槽名称、发送方名称、接收方名称和参数,如果可能)?安装事件筛选器并使用ev->type()==QEvent::MetaCall截获事件。调试器中可见的所有成员 需要访问私有标题吗?在.pro文件中使用QT+=core private
(tone mode=“original poster”)很难相信没有人阅读文档(/tone)没有官方API允许我做我想做的事情 检查QMetaCall事件(使用私有框架头)不是一个好主意。首先,它们是私有的(并且可能随时破坏您的代码);其次,如果立即删除了发送者,则QMetaCall event sender()指针可能无效,并且我无法找到一种干净的方法来检查此类情况下的事件 我现在使用的方式完全不同。我没有检查到达的事件对象,而是使用QSignalSpy的一个修改版本,它允许做比原始类更多的事情,并使用辅助连接帮助记录信号发射
在我的情况下,这似乎是可行的,即使它是相当复杂的,不是一个普遍的解决办法。至少不涉及任何私人标题。我阅读了文档。也许您可以提供一个链接,其中记录了QMetaCallEvent详细信息?或者是指向“核心专用”文档的链接?