网上有很多介绍QFileDialog的使用的,这里不多介绍。
QFileDialog有两种方式:
(1)一种是全局静态函数调用,详细见帮助文档
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
(2)一种是定义对象。剩余的也详细见帮助文档
QFileDialog dialog(this);//this代表主窗口qwidget
dialog.setOption(QFileDialog::DontUseNativeDialog, true);//能使resize生效的配置,不使用系统文件框,使用自定义的文件框
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setWindowTitle("选择文件");
dialog.setDirectory(fileDir);
dialog.resize(this->width()*4/5, this->height()*2/3);//必须要配置setOption,否则不生效
dialog.selectFile(fileName);
dialog.exec();
背景:在程序中使用QQuickWidget在主窗口widget中嵌入qml的方式,显示了某一部分窗口,在使用qml中的Dialog控件的时候,发现生成的窗口会在主窗口的后面,不能显示在最前面因此放弃了在qml中调用Dialog控件,选择在widget中调用QFileDialog。(注意:如果架构全部使用qml的话,非qquickwidget加载qml,不会出现覆盖的情况)。见上述例子。