• QT 打开文件对话框汇总


    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 Green Blue";
         QStringList colors = QStringList::split( " ", 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(", ")));
        }

    转自http://blog.csdn.net/lpdpzc/article/details/9010801

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    NHibernate Session-per-request and MiniProfiler.NHibernate
    NHibernate ConfORM Mapping
    微信小程序之网页开发——博客园老牛大讲堂
    帝国后台CMS模版使用
    微信小程序开发---博客园老牛大讲堂
    帝国CMS浅浅滴谈一下——博客园老牛大讲堂
    Java实现 第三方的验证码发送问题--博客园老牛大讲堂
    关于websocket自定义通信,聊天工具--博客园老牛大讲堂
    对ECMAScript的理解---博客园老牛大讲堂
    Css3引用外部字体样式---博客园老牛大讲堂
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4823209.html
Copyright © 2020-2023  润新知