我也遇到此问题,
我用linux自带函数来实现
DIR *dirp; 
if((dirp=opendir("/testDir/testDir"))==NULL) 
    {
        printf("open dir error\n");
        return;
    }
 while((direntp=readdir(dirp))!=NULL)
    {        
       sprintf(dataBuf, "%s/%s","/testDir/testDir",direntp->d_name);
       
       if(stat(dataBuf, &statbuf)==-1) 
       {
            continue;
       }
       if(!S_ISREG(statbuf.st_mode))  /*不是普通文件跳过*/
       {
            continue;
       } 
       
        QListViewItem * item = new QListViewItem( fileList);        
        item->setText( 0, tr(direntp->d_name));
  
               
    }