在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
从命令行中恢复正常,所以我知道我的用户可以访问列表那个目录。此外,没有错误消息或其他权限被拒绝的指示。发生了什么事?
答案 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文件)