1

我需要确定 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 没有捕捉到这一点。没有发出信号。任何想法如何做到这一点?

4

0 回答 0