一、文件对话框
文件对话框QFileDialog类提供了一个允许用户选择文件或者文件夹的对话框。
二、文件打开对话框
方式一:使用静态函数QFileDialog::getOpenFileName()
QString fileName = QFileDialog::getOpenFileName(this,tr("文件打开对话框"),"D:",tr("图片文件(*png *jpg)"));
这里使用QFileDialog类中的getOpenFileName()来获取选择的文件名,这个函数会以模态方式运行一个文件对话框。 他的四个参数的作用分别是: 指定父窗口、设置对话框标题、默认文件打开路径、设置文件类型过滤器。 如果不指定文件过滤器,则默认选择所有类型的文件。
如果要设置多个不同类别的过滤器,则要用“;;”隔开。
QString fileName = QFileDialog::getOpenFileName(this,tr("文件打开对话框"),"D:",tr("图片文件(*.png *.jpg);;文本文件(*txt)"));
要同时选择多个文件可以使用getOpenFileNames()函数。
方式二:创建QFileDialog对象来实现
QFileDialog * filedialog = new QFileDialog(this);//创建文件对话框对象,父对象为this
filedialog->setWindowTitle("Save");//设置对话框标题
filedialog->setAcceptMode(QFileDialog::AcceptOpen);//设置对话框为打开模式
filedialog->setFileMode(QFlifeDialog::AnyFile);//设置文件对话框的模式
filedialog->setViewMode(QFileDialog::Detail);//设置文件视图模式为详细模式
filedialog->selectFile("data.txt");//设置初始选中的文件为“data.txt”
filedialog->setFilter("*.csv;;*txt;;*.*");//设置文件过滤器
filedialog->selectNameFilter("*.csv");//设置初始选择的文件类型
if (openDialog.exec() == QFileDialog::AcceptOpen) {
QString openFile = openDialog.selectedFiles().first();//打开文件的路径(包含文件名)
QString openPath = openDialog.directory().path();//打开文件的路径
}
三、把已存在的文件进行另存为操作
方式一:使用静态函数QFileDialog::getSaveFileName()
QString fileName = QFileDialog::getSaveFileName(this,tr("文件打开对话框"),"D:",tr("图片文件(*png *jpg)"));
方式二:创建QFileDialog对象来实现
QFileDialog * filedialog = new QFileDialog(this);//创建文件对话框对象,父对象为this
filedialog->setWindowTitle("Save");//设置对话框标题
filedialog->setAcceptMode(QFileDialog::AcceptSave);//设置对话框为打开模式
filedialog->setFileMode(QFlifeDialog::AnyFile);//设置文件对话框的模式
filedialog->setViewMode(QFileDialog::Detail);//设置文件视图模式为详细模式
filedialog->selectFile("data.txt");//设置初始选中的文件为“data.txt”
filedialog->setFilter("*.csv;;*txt;;*.*");//设置文件过滤器
filedialog->selectNameFilter("*.csv");//设置初始选择的文件类型
if (openDialog.exec() == QFileDialog::AcceptSave) {
QString path = filedialog->selectedFiles()[0];
QFile file(path);
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
{
QString filePathToRead = "test.txt";//已存在的文件test.txt
QFile readFile(filePathToRead);
if (readFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream in(&readFile);
QTextStream out(&file);
out << in.readAll();
readFile.close();
file.close();
}
}
}