QT 文件对话框(QFileDialog)
1.选择文件(上传、打开...)
1 QString QFileDialog::getOpenFileName( 2 QWidget *parent = 0, //parent,用于指定父组件。注意,很多Qt组件的构造函数都会有这么一个parent参数,并提供一个默认值0; 3 const QString &caption = QString(), //caption,是对话框的标题 4 const QString &dir = QString(), //dir,是对话框显示时默认打开的目录,"." 代表程序运行目录,"/" 代表当前盘符的根目录(Windows,Linux下/就是根目录了),也可以是平台相关的,比如"C:\\"等; 5 const QString &filter = QString(), //filter,是对话框的后缀名过滤器,比如我们使用"Image Files(*.jpg *.png)"就让它只能显示后缀名是jpg或者png的文件。如果需要使用多个过滤器,使用";;"分割,比如"JPEG Files(*.jpg);;PNG Files(*.png)" 6 QString *selectedFilter = 0, //selectedFilter,是默认选择的过滤器 7 Options options = 0); //options,是对话框的一些参数设定,比如只显示文件夹等等,它的取值是enum QFileDialog::Option,每个选项可以使用 | 运算组合起来
getOpenFileName()函数参数比较多,比较难记Qt提供了另外的写法:
1 QFileDialog *fileDialog = new QFileDialog(this); 2 fileDialog->setWindowTitle(tr("Open Image")); 3 fileDialog->setDirectory("."); 4 fileDialog->setFilter(tr("Image Files(*.jpg *.png)")); 5 if(fileDialog->exec() == QDialog::Accepted) { 6 QString path = fileDialog->selectedFiles()[0]; 7 QMessageBox::information(NULL, tr("Path"), tr("You selected ") + path); 8 } else { 9 QMessageBox::information(NULL, tr("Path"), tr("You didn't select any files.")); 10 }
这两种写法虽然功能差别不大,但是弹出的对话框却并不一样。getOpenFileName()函数在Windows和MacOS X平台上提供的是本地的对话框,而QFileDialog提供的始终是Qt自己绘制的对话框(还记得前面说过,Qt的组件和Swing类似,也是自己绘制 的,而不都是调用系统资源API)。
2.选择多个文件(一次选择多个上传)
1 QStringList QFileDialog::getOpenFileNames(QWidget *parent = 0, 2 const QString &caption = QString(), 3 const QString &dir = QString(), 4 const QString &filter = QString(), 5 QString *selectedFilter = 0, 6 Options options = 0);
3.选择文件(保存文件)
QString QFileDialog::getSaveFileName(QWidget *parent = 0, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = 0, Options options = 0);
4.选择文件路径(选择文件的默认下载路径):
1 QString getExistingDirectory(QWidget *parent = 0, 2 const QString &caption = QString(), 3 const QString &dir = QString(), 4 Options options = ShowDirsOnly);
转载:QT之文件对话框-http://www.cnblogs.com/ylan2009/archive/2012/05/06/2486606.html