Qt中的QFileDialog类的几个示范代码

From: http://www.hedabbs.cn/thread-102600-1-1.html

  1. void Dialog::setExistingDirectory()
  2. {  //选择一个文件夹;
  3.     QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly;
  4.     if (!native->isChecked())
  5.         options |= QFileDialog::DontUseNativeDialog;
  6.     QString directory = QFileDialog::getExistingDirectory(this,
  7.                                 tr("QFileDialog::getExistingDirectory()"),
  8.                                 directoryLabel->text(),
  9.                                 options);
  10.     if (!directory.isEmpty())
  11.         directoryLabel->setText(directory);
  12. }
复制代码
  1. void Dialog::setOpenFileName()
  2. {  //打开一个文件;
  3.     QFileDialog::Options options;
  4.     if (!native->isChecked())
  5.         options |= QFileDialog::DontUseNativeDialog;
  6.     QString selectedFilter;
  7.     QString fileName = QFileDialog::getOpenFileName(this,
  8.                                 tr("QFileDialog::getOpenFileName()"),
  9.                                 openFileNameLabel->text(),
  10.                                 tr("All Files (*);;Text Files (*.txt)"),
  11.                                 &selectedFilter,
  12.                                 options);
  13.     if (!fileName.isEmpty())
  14.         openFileNameLabel->setText(fileName);
  15. }
复制代码
  1. void Dialog::setOpenFileNames()
  2. {  //打开多个文件;
  3.     QFileDialog::Options options;
  4.     if (!native->isChecked())
  5.         options |= QFileDialog::DontUseNativeDialog;
  6.     QString selectedFilter;
  7.     QStringList files = QFileDialog::getOpenFileNames(
  8.                                 this, tr("QFileDialog::getOpenFileNames()"),
  9.                                 openFilesPath,
  10.                                 tr("All Files (*);;Text Files (*.txt)"),
  11.                                 &selectedFilter,
  12.                                 options);
  13.     if (files.count()) {
  14.         openFilesPath = files[0];
  15.         openFileNamesLabel->setText(QString("[%1]").arg(files.join(", ")));
  16.     }
  17. }
复制代码
  1. void Dialog::setSaveFileName()
  2. {  //保存一个文件;
  3.     QFileDialog::Options options;
  4.     if (!native->isChecked())
  5.         options |= QFileDialog::DontUseNativeDialog;
  6.     QString selectedFilter;
  7.     QString fileName = QFileDialog::getSaveFileName(this,
  8.                                 tr("QFileDialog::getSaveFileName()"),
  9.                                 saveFileNameLabel->text(),
  10.                                 tr("All Files (*);;Text Files (*.txt)"),
  11.                                 &selectedFilter,
  12.                                 options);
  13.     if (!fileName.isEmpty())
  14.         saveFileNameLabel->setText(fileName);
  15. }
复制代码

==================================================================================================

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值