您的位置:首页 > 编程语言 > Qt开发

QT 打开文件对话框总结

2017-02-28 14:13 253 查看
转载自:http://blog.csdn.net/lpdpzc/article/details/9010801

一:

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\tGreen\tBlue";
QStringList colors = QStringList::split( "\t", 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(", ")));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt