-1

在 Ubuntu/Debian 平台上,我想通过在/dev.

如果我在我的主文件夹中设置一个虚拟文件夹,其中包含名为 video0、video1 等的文本文件,则下面的代码可以正常工作myPath,但是一旦我尝试直接从中列出,/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从命令行很好,所以我知道我的用户有权列出该目录。此外,没有错误消息或其他指示权限被拒绝的迹象。到底是怎么回事?

4

1 回答 1

2

我在发布我的问题后几秒钟就在文档中找到了答案,我现在因为没有猜到它而感到有点愚蠢,所以这就是答案。

//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 文件)

于 2015-06-12T12:43:22.243 回答