QT 打开文件对话框总结

小编:啊南 287阅读 2021.01.18

一:  Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr("Allfile(*.*);;mp3file(*.mp3)"));  

说明:这样就会产生一个对话框,和系统的资源管理器差不多的。返回的是你选择文件的 绝对路径。

参数1:父窗口 参数2:对话框的标题 参数3:默认的打开的位置,如”我的文档“等 参数4:文件的过滤器,注意文件类型之间用  ;;  分开

二:

QStringList    fileNameList; QString fileName0; 

QFileDialog* fd = new QFileDialog(this);//创建对话框 fd->resize(240,320);    //设置显示的大小 fd->setFilter( "Allfile(*.*);;mp3file(*.mp3);;wmafile(*.wma);;wavefile(*.wav)"); //设置文件过滤器 fd->setViewMode(QFileDialog::List);  //设置浏览模式,有 列表(list) 模式和 详细信息(detail)两种方式

if ( fd->exec() == QDialog::Accepted )   //如果成功的执行 { fileName0 = fd->selectedFiles();      //返回文件列表的名称 fileName = fileNameList[0];            //取第一个文件名 } else fd->close();

资料来源于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

Qt 打开文件对话框
1.打开单个文件

QString filename = QFileDialog::getOpenFileName(    this,    "Open Document",    QDir::currentPath(),    "Document files (*.doc *.rtf);;All files(*.*)"); if (!filename.isNull()) { //用户选择了文件    // 处理文件    QMessageBox::information(this, "Document", "Has document", QMessageBox::Ok | QMessageBox::Cancel); } else // 用户取消选择    QMessageBox::information(this, "Document", "No document", QMessageBox::Ok | QMessageBox::Cancel);

2. 可以选定多个文件的文件打开对话框     QFileDialog::Options options;     if (!native->isChecked())         options |= QFileDialog::DontUseNativeDialog;     QString selectedFilter;     QStringList files = QFileDialog::getOpenFileNames(                                 this, tr("QFileDialog::getOpenFileNames()"),                                 openFilesPath,                                 tr("All Files (*);;Text Files (*.txt)"),                                 &selectedFilter,                                 options);     if (files.count()) {         openFilesPath = files[0];         openFileNamesLabel->setText(QString("[%1]").arg(files.join(", ")));     }

关联标签: