在 QT 中,我们有以下可用的 16 位无符号表示:
typedef unsigned short int uint16_t; (in stdint.h)
typedef unsigned short quint16; (in qglobal.h)
这两者有什么区别?我得到了一个带有以下 typedef 的外部头文件(我不能修改):
typedef uint16_t MyCustomId;
此“MyCustomId”字段用于插槽信号以与 DBUS 通信。
class CMyDbusProxy: public QDBusAbstractInterface
{
Q_OBJECT
Q_SIGNALS:
void Test(MyCustomId);
};
问题是 CMyDbusProxy 没有注意到从 DBUS 服务发送的信号,因此根本不会触发任何插槽。如果我手动将 typedef 更改为(我不应该这样做,它只是为了测试):
typedef quint16 MyCustomId;
一切正常。DBUS服务端的信号有“signature='q'”,表示uint16。
如何克服这种类型匹配问题并使用“uint16_t”接收信号?