首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

求解一个函数,该如何解决

2012-01-12 
求解一个函数代码如下:******************************************************************QStringList

求解一个函数
代码如下:
******************************************************************
QStringList findFiles(const QString &startDir, QStringList filters)
{

  1 QStringList names;
  2 QDir dir(startDir);
  3 foreach (QString file, dir.entryList(filters, QDir::Files))
  4 names += startDir + "/" + file;
  5 qDebug()<<"names1: "<<names<<"\n"<<"subdir1: "<<startDir<<"\n"<<"\n";
  6 foreach (QString subdir, dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot))
  7 names += findFiles(startDir + "/" + subdir, filters);
  8 qDebug()<<"names2: "<<names<<"\n"<<"subdir2: "<<startDir<<"\n"<<"\n";

  return names;
}
********************************************************************
关于这个函数,是qtsdk-2009.05/qt/examples/qtconcurrent/wordcount里的。
第一个问题:4处,为什么startDir为 "../../"时,names为()?
第二个问题:6处,什么时候代码能够执行到这个foreach()?
最好能把这个函数总的讲一下。。。
 

[解决办法]
第一个问题有点奇怪,"names为 ()" ,意思是names= "()" 么?很奇怪。
因为生成的文件时在debug 或者 release下
理论上是../../的目录对于你是 qtsdk-2009.05/qt/examples/qtconcurrent/
保存到names是,应该是 “../../"+"/"+查找到文件的路径相对路径
第二个问题:
运行完前面一个foreach(查找完本目录)后,
就是后运行这个foreach ,用递归的方法查找子目录。

函数的作用就是在在给定的目录内查找,返回符合filters条件的文件列表(QStringList)

我也是初学者,稍微看了一下这个例子。
[解决办法]
1 ../ 代表父文件夹,然后逻辑想一下
2 前面的qdebug执行完了就行,没有大括号的foreach只管后面的一句

2楼的问题,你可以自己写小程序试试

热点排行