标题:可以检测usb热拔插的qt类
作者:novesky
日期:2011-09-11 11:12
内容:
项目已在https://github.com/wang-bin/qdevicewatcher
目前支持linux和windows。一般只要用QDeviceWathcer的deviceAdded(const QString&)和deviceRemoved(const QString&)这两个信号就够了。
linux下是用netlink,Windows下参考qdrive项目 https://gitorious.org/qdrive/qdrive,
没有完全看懂,所以我的代码可能会有点问题。但至少可以正常工作了。
之前windows下我的方法是继承QCoreApplication,重新实现QCoreApplication::winEventFilter(MSG* msg, long* result)。但是希望做成QObject的子类,这样可以单独使用;也可以继承QWidget,重新实现QWidget::winEvent(MSG* msg, long* result),但是不想引入GUI模块。最后很幸运地找到了qdrive这个项目,它还实现了mac和symbian平台,可能QCore获取windows消息的实现也是类似的方法。
qdrive的linux下实现方式是监视/etc/mtab,但是这要求系统会自动挂载设备,用netlink没这个要求,这个我对作者提出了。2.6一下的内核不支持netlink,倒是可以使用监视/etc/mtab,因为还没想到其他办法。
#1 [咖啡猫大人 10-25 12:18]
不错啊~加油哦~
#2 [yanxinorg 11-25 13:21]
强人
#3 [shucan3652 08-26 22:16]
lz好人,一生平安,感谢分享