I need to identify particular moment when DVD disk has been ejected from optical drive, for example by pressing eject button.
I've tried to use signal directoryChanged from QFileSystemWatcher in Qt5 as possible solution.
#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;
};
Using this sample, I've pressed eject button on drive. The drive has been ejected and disappeared from "Computer" directory. But, QFileSystemWatcher doesn't catch this. No signals emitted. Any ideas how to do that?