• 大小: 319KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: USB  热插拔  跨平台  QT  

资源简介

一个很好用的跨平台的USB设备(比如USB鼠标、U盘等)热插拔 QT库。兼容LINUX(Ubuntu),WINDOWS,WINCE,MAC OS。带有终端以及GUI例子,方便运行测试。

资源截图

代码片段和文件信息

/******************************************************************************
QDeviceWatcher: Device watcher class
    Copyright (C) 2011-2015 Wang Bin 

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License or (at your option) any later version.

    This library is distributed in the hope that it will be useful
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not write to the Free Software
    Foundation Inc. 51 Franklin Street Fifth Floor Boston MA  02110-1301  USA
******************************************************************************/

#include “qdevicewatcher.h“
#include “qdevicewatcher_p.h“

QDeviceWatcher::QDeviceWatcher(Qobject* parent)
:Qobject(parent)running(false)d_ptr(new QDeviceWatcherPrivate)
{
Q_D(QDeviceWatcher);
d->setWatcher(this);
}

QDeviceWatcher::~QDeviceWatcher()
{
if (d_ptr) {
delete d_ptr;
d_ptr = NULL;
}
}

bool QDeviceWatcher::start()
{
Q_D(QDeviceWatcher);
if (!d->start()) {
stop();
running = false;
}
running = true;
return running;
}

bool QDeviceWatcher::stop()
{
Q_D(QDeviceWatcher);
running = !d->stop();
return !running;
}

bool QDeviceWatcher::isRunning() const
{
return running;
}

void QDeviceWatcher::appendEventReceiver(Qobject *receiver)
{
Q_D(QDeviceWatcher);
d->event_receivers.append(receiver);
}

void QDeviceWatcherPrivate::emitDeviceAdded(const QString &dev)
{
if (!Qmetaobject::invokeMethod(watcher “deviceAdded“ Q_ARG(QString dev)))
qWarning(“invoke deviceAdded failed“);
}

void QDeviceWatcherPrivate::emitDeviceChanged(const QString &dev)
{
if (!Qmetaobject::invokeMethod(watcher “deviceChanged“ Q_ARG(QString dev)))
qWarning(“invoke deviceChanged failed“);
}

void QDeviceWatcherPrivate::emitDeviceRemoved(const QString &dev)
{
if (!Qmetaobject::invokeMethod(watcher “deviceRemoved“ Q_ARG(QString dev)))
qWarning(“invoke deviceRemoved failed“);
}

void QDeviceWatcherPrivate::emitDeviceAction(const QString &dev const QString &action)
{
QString a(action.toLower());
if (a == QLatin1String(“add“))
emitDeviceAdded(dev);
else if (a == QLatin1String(“remove“))
emitDeviceRemoved(dev);
else if (a == QLatin1String(“change“))
emitDeviceChanged(dev);
}


//const QEvent::Type  QDeviceChangeEvent::EventType = static_cast(QEvent::registerEventType());
QDeviceChangeEvent::QDeviceChangeEvent(Action action const QString &device) :
    QEvent(registeredType())
{
    m_action = action;
    m_device = device;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         326  2018-03-29 09:55  QDeviceWatcher.pro
     文件       16473  2018-03-29 09:55  common.pri
     目录           0  2018-08-24 09:21  screenshot\
     文件      151898  2018-03-29 09:55  screenshot\ubuntu-gui-debug.png
     文件       56479  2018-03-29 09:55  screenshot\ubuntu.png
     文件       19680  2018-03-29 09:55  screenshot\win7-gui-debug.png
     文件       36428  2018-03-29 09:55  screenshot\win7.png
     文件       48029  2018-03-29 09:55  screenshot\wince-emu-gui.PNG
     目录           0  2018-08-24 09:21  src\
     文件        4351  2018-03-29 09:55  src\libQDeviceWatcher.pri
     文件         589  2018-03-29 09:55  src\libQDeviceWatcher.pro
     文件        2895  2018-03-29 09:55  src\qdevicewatcher.cpp
     文件        2461  2018-03-29 09:55  src\qdevicewatcher.h
     文件        7912  2018-03-29 09:55  src\qdevicewatcher_linux.cpp
     文件        2921  2018-03-29 09:55  src\qdevicewatcher_mac.cpp
     文件        3333  2018-03-29 09:55  src\qdevicewatcher_p.h
     文件       12881  2018-03-29 09:55  src\qdevicewatcher_win32.cpp
     文件        3924  2018-03-29 09:55  src\qdevicewatcher_wince.cpp
     目录           0  2018-08-24 09:21  test\
     文件        3067  2018-03-29 09:55  test\hotplugwatcher.h
     文件         396  2018-03-29 09:55  test\hotplugwatcher.pro
     文件        3911  2018-03-29 09:55  test\hotplugwatcher_gui.cpp
     文件        1793  2018-03-29 09:55  test\hotplugwatcher_gui.h
     文件         455  2018-03-29 09:55  test\hotplugwatcher_gui.pro
     文件        1246  2018-03-29 09:55  test\main.cpp
     文件        1669  2018-03-29 09:55  test\main_gui.cpp

评论

共有 条评论