轉自http://www.qtcn.org/bbs/read-htm-tid-14535.html
在pro文件中應該加入
QT +=dbus
#include <QtDBus/QDBusConnection>
//以下爲檢測設備的插入
QDBusConnection::systemBus().connect( "org.freedesktop.Hal",
"/org/freedesktop/Hal/Manager",
"org.freedesktop.Hal.Manager",
"DeviceAdded",
this,
SLOT(slotDeviceAdded(QString )));
//以下爲檢查設備的撥出
QDBusConnection::systemBus().connect( "org.freedesktop.Hal",
"/org/freedesktop/Hal/Manager",
"org.freedesktop.Hal.Manager",
"DeviceRemoved",
this,
SLOT(slotDeviceRemoved(QString )));
在slotDeviceAdded(QString udi)函數中,要使用到
QDBusInterface device("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device" , QDBusConnection::systemBus());
通過HAL可以查詢到設備爲volume的設備,然後通過判斷是否爲/dev/sd*的設備,就可以判斷出是否爲U盤,然後調用mount就可以了。
這時記錄下U盤的UDI,在檢測到設備撥出時,再查詢一下U盤的UDI是否還在,就知道U盤是否被撥出了。