2

在 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”接收信号?

4

0 回答 0