• 2993阅读
  • 1回复

收集了两种不同的对话框,发出来有用到的看看。 [复制链接]

上一主题 下一主题
离线robertkun
 

只看楼主 倒序阅读 楼主  发表于: 2009-05-27
第一种:

    QFileDialog dlg;
     QList<QPushButton *> lists = dlg.findChildren<QPushButton *>();
     foreach(QObject *obj, lists)
     {
         QPushButton *button = qobject_cast<QPushButton *>(obj);
         if(button->text() == "Open")
             button->setText("asdf");
     }
    dlg.exec();
-------------------------------------------------------------------------------------------------------------
第二种:

    QStringList files = QFileDialog::getOpenFileNames(
        this,
        "Select one or more files to open",
        "/home",
        "Images (*.png *.xpm *.jpg)");

-------------------------------------------------------------------------------------------------------------
                                              简单的生活使人快乐!
离线robertkun

只看该作者 1楼 发表于: 2009-05-27
再顶一个。。
一.  最简单的方法是调用静态函数来对话框获取文件:
  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
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个