【发布时间】:2014-04-21 22:17:02
【问题描述】:
QT 5.2.1
Win7 64位
我正在使用 QFileDialog 来选择文件名
- 在选择是否写入或读取文件时是未知的,因此 QFileDialog::getOpenFilename() 和 QFileDIalog::getSaveFilename() 不能很好地解决这个问题。
由于某种原因,我无法选择标记为“只读”的文件。
如果我通过了“DontUseNativeDialog”选项,那么我可以选择一个只读文件。然而,这并不理想。 AFAICT,我没有理由不能使用本机对话框选择只读文件。这只是 Windows 实现中的一个错误,还是我遗漏了什么?
创建对话框的相关代码:
// create a generic FileDialog
QFileDialog dialog(NULL, tr("Select a disk image"));
dialog.setNameFilter(tr("Image Files (*.img *.IMG);;*.*"));
dialog.setFileMode(QFileDialog::AnyFile); // should be default
dialog.setViewMode(QFileDialog::Detail); // should be default
dialog.setAcceptMode(QFileDialog::AcceptOpen); // should be default
dialog.setOption(QFileDialog::DontConfirmOverwrite, true);
QString fileLocation = NULL;
if (dialog.exec())
{
// selectedFiles returns a QStringList - only expecting 1 filename,
// so use the zero'th element from that list
fileLocation = (dialog.selectedFiles())[0];
}
完整的测试项目贴在这里:
http://pastebin.com/TuM4AY4x
【问题讨论】: