QFileDialog
环境
Qt14.2 MSVC
共同参数使用方式
QFileDialog::XXX(this, “标题”, “初始路径”(不写就默认项目路径), “筛选条件”, “默认选择的筛选条件”);
QWidget *parent = nullptr, //依赖的父窗口
const QString &caption = QString(), //标题
const QString &dir = QString(), //当前目录
const QString &filter = QString(), //写好的筛选条件,多个可用两个分号即;;隔开
QString *selectedFilter = nullptr, //默认被选择的筛选条件
QFileDialog::Options options = Options() //选项枚举
QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"));
// 如果想提供默认的文件名
// 只需要更改参数dir,其的末尾加上文件名即可,比如上面的jana实际是默认成为一个文件名,如果想变成目录,最后加个'/'即可
tr里可以通过语言家来进行修改,以实现中英切换。
值得注意的是,筛选条件的大小写不敏感。
.
QFileDialog::getOpenFileUrl与getOpenFileUrls
获取单个文件的文件路径,可获取远程文件,若QFileDialog::getOpenFileUrls就可以多个
QUrl("file:///D:/PrivateProject/testProject/testUtf8Qcc/Debug/ui_dialog.h")
QFileDialog::getOpenFileName与getOpenFileNames
获取单个文件的文件路径,若QFileDialog::getOpenFileNames就可以多个
"D:/PrivateProject/testProject/testUtf8Qcc/Debug/ui_mainwindow.h"
QFileDialog::getSaveFileUrl与getSaveFileName
设置自定义名称,或覆盖某文件(自己覆盖,只是提示),并拼接所在目录的路径
QUrl("file:///D:/PrivateProject/testProject/testUtf8Qcc/Debug/可以适当,cpp")
"D:/PrivateProject/testProject/testUtf8Qcc/Debug/可以适当,cpp"
QFileDialog::getExistingDirectory与getExistingDirectoryUrl
获取文件夹路径,与文件无关
QUrl("file:///D:/PrivateProject/testProject/testUtf8Qcc/Debug")
"D:/PrivateProject/testProject/testUtf8Qcc/Debug"
QFileDialog::getOpenFileContent
获取文件内容,但是不好用,界面比较粗糙
auto fileContentReady = [](const QString &fileName, const QByteArray &fileContent) {
if (fileName.isEmpty()) {
// No file was selected
} else {
// Use fileName and fileContent
qDebug().noquote() << __FILE__ << __LINE__ << fileName << fileContent;
}
};
QFileDialog::getOpenFileContent("Images (*.png *.xpm *.jpg)", fileContentReady);