可以使用QFileDialog类创建一个文件对话框,用于选择文件夹和普通文件,可以选择单个文件也可以选择多个文件,可以限制文件的格式也可以不限制,这里的选择其实就是获取文件夹和普通文件的路径,后续再利用获取的路径打开相应的文件,如下图所示。
以下是QFileDialog类常用的公有静态成员函数,通过这些公有静态成员函数可以快速的创建各种文件对话框。
getExistingDirectory:获取已存在文件夹路径
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
"/home",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
getExistingDirectoryUrl:和getExistingDirectory差不多,区别在于可以获取远程文件的路径
getOpenFileName:获取已存在单个限定格式文件的路径,通过筛选器限定文件格式。
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"/home",
tr("Images (*.png *.xpm *.jpg)"));
如果要选择多种格式, 可以使用两个分号';;'分开
"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
getOpenFileNames:获取已存在多个限定格式文件的路径,通过筛选器限定文件格式
QStringList files = QFileDialog::getOpenFileNames(
this,
"Select one or more files to open",
"/home",
"Images (*.png *.xpm *.jpg)");
getOpenFileUrl:和getOpenFileName差不多,区别在于可以获取远程文件的路径
getOpenFileUrls:和getOpenFileNames差不多,区别在于可以获取远程文件的路径
getSaveFileName:获取用户选择的文件名,该文件不必存在
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
"/home/jana/untitled.png",
tr("Images (*.png *.xpm *.jpg)"));
getSaveFileUrl:和getSaveFileName差不多,区别在于可以获取远程文件的路径
1、判断是否是普通文件、目录、符号链接、隐藏文件、文件路径是绝对的还是相对的、读写。
2、获取文件名称、文件路径、目录路径、文件时间、上次修改文件的日期和本地时间、上次读取(访问)文件的日期和本地时间、文件的路径不包括文件名、文件大小、符号链接指向的文件或目录的绝对路径、文件创建/生成的日期和时间。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
OpenFile();
selectFile();
}
MainWindow::~MainWindow()
{
delete ui;
}
/*
void MainWindow::OpenFile()
{
//获取已存在单个限定格式文件的路径
QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"), "", tr("Image Files (*.png *.jpg *.bmp)"));
//文件绝对路径"F:/图片/c5387854a94f7fa4cce004ede8e7123a.jpg"
qDebug()<<"文件名:"<setWindowTitle(tr("打开图片"));
//设置默认文件路径
fileDialog->setDirectory(".");
//设置文件过滤器
fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
//设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
fileDialog->setFileMode(QFileDialog::ExistingFile);
//设置视图模式
fileDialog->setViewMode(QFileDialog::Detail);
//打印所有选择的文件的路径
QString fileName;
if(fileDialog->exec())
{
fileDialog->selectFile(fileName);
qDebug()<setWindowTitle(tr("打开图片"));
//设置默认文件路径
fileDialog->setDirectory(".");
//设置文件过滤器
fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
//设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
fileDialog->setFileMode(QFileDialog::ExistingFiles);
//设置视图模式
fileDialog->setViewMode(QFileDialog::Detail);
//打印所有选择的文件的路径
QStringList fileNames;
if(fileDialog->exec())
{
fileNames = fileDialog->selectedFiles();
}
foreach(QString str,fileNames)
{
qDebug()<