网上的参考代码很多,比如下面这个:
QT 检测hid设备拔插打印设备信息_qt hid打印机_研知电子的博客-CSDN博客
但是,参考了很多人的代码,写出来的发现检测不到USB HID设备的拔插。
明明其他人都可以正常使用,那问题应该是出在我这里了,
试了一下发现是Qt里重写的nativeEvent无响应,一直进入不到这个函数里面,
网上查找了一下,
一个是:nativeEvent只在窗口中有效
二是:在QT6中,nativeEvent的参数类型变了
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
virtual bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
#else
virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result);
#endif
我改了一下使用bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
这个才能正常检测了。
如图:
拔插USB HID设备可以检测到具体信息。拔插USB但非HID设备,只能检测到动作。
完整工程:https://download.csdn.net/download/sinat_42513925/88034902https://download.csdn.net/download/sinat_42513925/88034902