QT識別U盤一自帶的QDBus(hal)

轉自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盤是否被撥出了。

發佈了18 篇原創文章 · 獲贊 10 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章