无法在Qt5中使用QDir在Ubuntu / Debian中列出设备文件

时间:2015-06-12 12:36:04

标签: list permissions directory qt5 qdir

在Ubuntu / Debian平台上,我想通过在/dev下列出他们的设备文件,在我的Qt5应用程序中使用QDir列出所有可能的视频源。

如果我将myPath设置为我的主文件夹中的虚拟文件夹,其中包含名为video0,video1等的文本文件,但下面的代码工作正常。但是一旦我尝试直接从/dev列出它根本不列出任何文件。

    QString myPath="/dev";// This works when I set it to my dummy folder /home/me/dev with dummy text files in it.
    QDir dir;
    dir.setPath(myPath);
    QStringList filters;
    filters<<"video?";
    dir.setNameFilters(filters);
    dir.setSorting(QDir::Name );
    QFileInfoList list = dir.entryInfoList();
    const int ct= list.size();
    qDebug()<<"Found " <<QString::number(ct)<<" cameras";
    for (int i = 0; i <ct; ++i) {
        QFileInfo fileInfo = list.at(i);
        qDebug()<<"Camera : "<<QString("%1 %2").arg(fileInfo.size(), 10).arg(fileInfo.fileName());

    }

我可以cd /dev && ls从命令行中恢复正常,所以我知道我的用户可以访问列表那个目录。此外,没有错误消息或其他权限被拒绝的指示。发生了什么事?

1 个答案:

答案 0 :(得分:0)

我在发布问题后几秒钟就在documentation找到了答案,现在因为没有猜测而感到有些愚蠢,所以这就是答案。

//Search for all files including system files (system means device files on linux)
dir.setFilter( QDir::AllEntries | QDir::System);

来自文档:

  

QDir :: System 0x200列出系统文件(在Unix,FIFO,套接字和   包含设备文件;在Windows上,包括.lnk文件)