From: http://www.hedabbs.cn/thread-102600-1-1.html
==================================================================================================
From: http://feizf.blogbus.com/logs/5112083.html
 
 资料来源于Qt官方文档,我总结了其中常用到的部分:
 
 一.  最简单的方法是调用静态函数来对话框获取文件:
   QString file = QFileDialog::getOpenFileName(
                     "/home/foxman",
                     "Images (*.png *.xpm *.jpg)",
                     this);
      这断代码可以建立一个取文件对话框,选择后OK将文件路径返回给file.
          
 二. 一般的文件对话框的使用
   QFileDialog *fd=new QFileDialog(this,"file dlg",TRUE);
     if(fd->exec()==QFileDialog::Accepted) // ok
     {
        QString file=fd->selectedFile();
       qWarning(s);
     }
 
   1. 几个设定选项:
 
    a. 设定显示模式
      fd->setViewMode( QFileDialog::Detail );
      //Detail显示 详细的文件日期大小, List为一般情况
 
    b. 设定过滤器
       fd->setFilter( "Images (*.png *.xpm *.jpg)" ); 
      下面是设定多个过滤器,一定要以;;隔开(两个分号)
      QString filters="C file(*.c *.cpp *.h);;pic(*.png *.xpm)"; 
      fd->setFilters(filters);
 
   c.  设定对话框返回什么 
     fd->setMode( QFileDialog::ExistingFile ); 
     AnyFile(一般用于save as对话框)
    ExistingFile存在的一个文件
    ExistingFiles存在的0个或多个文件(可用于选择多个文件)
    Directory返回目录
    DirectoryOnly返回目录(选取文件的时候只选中目录)  
  
   2. 返回值:
      a. 返回选择中的一个文件(夹)名字
         QString s=fd->selectedFile(); 
      b. 选取多个文件(一定要设定ExistingFiles模式)
          QStringList slist=fd->selectedFiles();    
                for(QStringList::Iterator it=slist.begin();it!=slist.end();it++) //迭代器
                  qWarning(*it);
 
 附: 字符串列表QStringList使用方法
 
  1. 可以以append、+、<< 方式添加元素
     QStringList slist;
     slist.append("string1");
     slist += "string2";
     slist << "string3" << "string4";
 
 2.迭代器取得每一个变量值 
        for(QStringList::Iterator it=slist.begin();it!=slist.end();it++)  qWarning(*it);
 
 3. 一种使用方式
     QString s = "Red\tGreen\tBlue";
      QStringList colors = QStringList::split( "\t", s );
      cout << colors.join( ", " ) << endl;
      输出:   Red, Green, Blue