イジェクト ボタンを押すなどして、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 はこれをキャッチしません。信号は発信されません。それを行う方法はありますか?