为了检测USB设备的插入和弹出信号,可以重载Qt窗口类的nativeEvent函数:
在nativeEvent中过滤出Window的WM_DEVICECHANGE信息(通知应用程序设备或计算机的硬件配置的更改),就可以检测到USB设备的插入和弹出(也可能检测到其它设备)。
#include <Windows.h>
#include <Dbt.h>
bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
PMSG msg = (PMSG)message;
//监控设备改变信号
if(msg->message == WM_DEVICECHANGE)
{
switch (msg->wParam) {
//设备连接
case DBT_DEVICEARRIVAL:
break;
//设备移出
case DBT_DEVICEREMOVECOMPLETE:
break;
default:
break;
}
}
return QWidget::nativeEvent(eventType, message, result);
}