Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 记录排队连接_Qt_Logging_Signals Slots_Qevent_Queued Connection - Fatal编程技术网

Qt 记录排队连接

Qt 记录排队连接,qt,logging,signals-slots,qevent,queued-connection,Qt,Logging,Signals Slots,Qevent,Queued Connection,我正在使用Qt5.4构建的复杂状态引擎系统(使用自定义状态引擎类) 代码的一部分是记录事件、转换等。记录引擎/状态对象接收到的所有事件对我来说非常重要,这样我就可以完全跟踪状态引擎中发生的事情 对于大多数事件类型,日志记录很容易。但是,我未能记录排队连接(即元调用事件)。QMetaCallEvent是私有的,所以我无能为力。然而,很难相信Qt的这样一个组成部分不能被正确检查 是否有我错过的方法允许记录排队连接(包括信号名称、插槽名称、发送方名称、接收方名称和参数,如果可能)?安装事件筛选器并使用

我正在使用Qt5.4构建的复杂状态引擎系统(使用自定义状态引擎类)

代码的一部分是记录事件、转换等。记录引擎/状态对象接收到的所有事件对我来说非常重要,这样我就可以完全跟踪状态引擎中发生的事情

对于大多数事件类型,日志记录很容易。但是,我未能记录排队连接(即元调用事件)。QMetaCallEvent是私有的,所以我无能为力。然而,很难相信Qt的这样一个组成部分不能被正确检查


是否有我错过的方法允许记录排队连接(包括信号名称、插槽名称、发送方名称、接收方名称和参数,如果可能)?

安装事件筛选器并使用ev->type()==QEvent::MetaCall截获事件。调试器中可见的所有成员

需要访问私有标题吗?在.pro文件中使用QT+=core private


(tone mode=“original poster”)很难相信没有人阅读文档(/tone)

没有官方API允许我做我想做的事情

检查QMetaCall事件(使用私有框架头)不是一个好主意。首先,它们是私有的(并且可能随时破坏您的代码);其次,如果立即删除了发送者,则QMetaCall event sender()指针可能无效,并且我无法找到一种干净的方法来检查此类情况下的事件

我现在使用的方式完全不同。我没有检查到达的事件对象,而是使用QSignalSpy的一个修改版本,它允许做比原始类更多的事情,并使用辅助连接帮助记录信号发射


在我的情况下,这似乎是可行的,即使它是相当复杂的,不是一个普遍的解决办法。至少不涉及任何私人标题。

我阅读了文档。也许您可以提供一个链接,其中记录了QMetaCallEvent详细信息?或者是指向“核心专用”文档的链接?