zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    SQL 查询中 not in的改进,--not exists
    REST接口--转摘
    C#中@的用法总结(转)
    有感于哈工大matlab被限制使用
    Oracle CURRVAL应用限制
    oracle to_char()函数--数字型到字符型
    如何提交代码到git仓库
    cannot find module 'xxx' 解决办法
    DOM-基本概念及使用
    AJAX-同源策略 跨域访问
  • 原文地址:https://www.cnblogs.com/veins/p/3185390.html
Copyright © 2011-2022 走看看