新浪博客

Qt中QFileDialog::getOpenFileName的用法(附如何支持带中文路径的读取)

2015-04-07 15:52阅读:
QFileDialog::getOpenFileName 函数含有六个参数
QString QFileDialog::getOpenFileName (QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0 )
第一个参数parent,用于指定父组件。注意,很多Qt组件的构造函数都会有这么一个parent参数,并提供一个默认值0;在一般成员函数中写作this,但是要记住如果是在main函数中一定要写NULL。
第二个参数caption,是对话框的标题。
​第三个参数dir,是对话框显示时默认打开的目录。'.' 代表程序运行目录,'/' 代表当前盘符的根目录。如果不明确选择,只需要返回绝对路径也可以这样写
QDir dir; dir.absolutePath()。这个参数是最不好理解的。
第四个参数filter,是对话框的后缀名过滤器。如果显示该目录下的全部文件可以“*.*”需要什么自己修改后面的*。
第五个参数selectedFilter,是默认选择的过滤器。
第六个参数options,是对话框的一些参数设定,比如只显示文件夹等等,它的取值是
enum QFileDialog::Option,每个选项可以使用 | 运算组合起来。
第五、六个参数没有要求的话可以不写。
eg:
QString filter;
filter = 'Image file (*.*)';
QDir dir;
r_fixedfilename = QFileDialog::getOpenFileName( NULL, QString('Load Image file supported by ITK Image Reader'), dir.absolutePath() , filter );


如何支持带中文路径的读取:
QByteArray file_mid = r_fixedfilename.toLocal8Bit();
fixedfilename = file_mid.data(); //r_fixedfilename接前面的例子
但是这种格式强制转换容易造成函数不稳定,如果在此运行报错,不一定是程序出错,可以在一台配置更好PC上的运行试试。



我的更多文章

下载客户端阅读体验更佳

APP专享