Qt中 文件对话框QFileDialog 的使用

资料来源于Qt官方文档,我总结了其中常用到的部分:

一. 最简单的方法是调用静态函数来对话框获取文件:
QString file = QFileDialog::getOpenFileName(
                    "/home/foxman",
                    "Images (*.png *.xpm *.jpg)",
                    this);
      这断代码可以建立一个取文件对话框,选择后OK将文件路径返回给file.
         
二. 一般的文件对话框的使用

QFileDialog*fd=newQFileDialog(this,tr("选择投影数据文件目录"),"../../ProjectData/","");
fd->setFileMode(QFileDialog::Directory);
fd->setViewMode(QFileDialog::Detail);
QStringList fileNamesList;
if(fd->exec())// ok
{
fileNamesList=fd->selectedFiles();
}

//"D:/VSWorkSpace/LCDCS/ProjectData/bg_40kv_1ma"
QString fileName = fileNamesList.at(0).toLocal8Bit().constData();
QDir dir = fd->directory();

//"D:/VSWorkSpace/LCDCS/ProjectData/bg_40kv_1ma"
QString absoluteFilePath = dir.absoluteFilePath(fileName);
QString absolutePath = dir.absolutePath();//"D:/VSWorkSpace/LCDCS/ProjectData"
QString canonicalPath = dir.canonicalPath();//"D:/VSWorkSpace/LCDCS/ProjectData"
QString dirName = dir.dirName();//"ProjectData"

//"D:/VSWorkSpace/LCDCS/ProjectData/bg_40kv_1ma"
QString filePath = dir.filePath(fileName);
qDebug()<<absoluteFilePath;
qDebug()<<absolutePath;
qDebug()<<canonicalPath;
qDebug()<<dirName;
qDebug()<<filePath;

 

QDir dir(fileName);
QStringList fileNames = dir.entryList(QDir::Files);//加个过滤器,只获得该目录下所有文件名
QStringList::Iterator it = fileNames.begin();
while(it != fileNames.end()){

ReadProjectThread::mutexFileList.lock();
ReadProjectThread::projectFileList.append(*it);
++it;
ReadProjectThread::mutexFileList.unlock();
}


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

 

转载:http://blog.csdn.net/hufeng825/article/details/5766703

posted on 2013-07-12 04:41  veins  阅读(1346)  评论(0编辑  收藏  举报

导航