У меня есть QDialog, который открывает QFileDialog следующим образом:
QFileDialog fd(this);
fd.setFileMode(QFileDialog::AnyFile);
if (fd.exec()) {
// save data to a file
}
К сожалению, поведение по умолчанию не кажется таким уж стандартным, и диалоговое окно файла не выдает подсказки о перезаписи, если я выбираю файл, который уже существует. Вызов setConfirmOverwrite(true)
или setOption(QFileDialog::DontConfirmOverwrite, false)
первым тоже не поможет. Я проверял это на Qt 4.7.3 и 4.7.4 на Ubuntu 11.04 и Windows XP.
Я оглянулся и нашел этот отчет об ошибке . QFileDialog::getSaveFileName()
была эта проблема, но она была характерна для Maemo и исправлена задолго до выхода Qt 4.7.3. Если я использую этот метод в своем приложении, он работает просто отлично, меня просят перезаписать файл. (Я не хочу использовать getSaveFileName()
по несвязанным причинам.)
Я не могу найти никого, кто бы жаловался, что это не работает для них. Я что-то не так делаю, или это ошибка? Я думаю, это может быть связано с тем, что диалоговое окно не знает, является ли это простым диалоговым окном «Открыть», где подсказки не имеют смысла, но я не вижу способа сказать, что это диалоговое окно «Сохранить» (кроме установки параметра подтверждения-перезаписи, что не получается), а в документации действительно сказано, что по умолчанию должно быть приглашение.