我需要确定 DVD 磁盘从光驱中弹出的特定时刻,例如按下弹出按钮。
我尝试在 Qt5 中使用来自 QFileSystemWatcher 的信号 directoryChanged 作为可能的解决方案。
#include <QFileSystemWatcher>
class RemovableDriveController : public QObject
{
Q_OBJECT
public:
RemovableDriveController(QObject * parent = nullptr)
: QObject(parent)
, m_fileSystemWatcher(new QFileSystemWatcher(this))
{
m_fileSystemWatcher->addPath("E:/"); // In my case the DVD-drive is E letter
connect(m_fileSystemWatcher, &QFileSystemWatcher::directoryChanged, this, &RemovableDriveController::onRemovableDriveEjected);
qDebug() << m_fileSystemWatcher->directories();
}
public slots:
void onRemovableDriveEjected()
{
qDebug() << "Continue here";
}
private:
QFileSystemWatcher * m_fileSystemWatcher;
};
使用此示例,我按下了驱动器上的弹出按钮。该驱动器已被弹出并从“计算机”目录中消失。但是,QFileSystemWatcher 没有捕捉到这一点。没有发出信号。任何想法如何做到这一点?