QT getSaveFileUrl метод, дублирующий имя файла по умолчанию - PullRequest
1 голос
/ 29 февраля 2020

Я создаю диалог «Сохранить как ...». У меня проблема с getSaveFileUrl , не устанавливающим правильное имя файла по умолчанию. Например, я хочу, чтобы имя файла по умолчанию было «Project1», но когда я пишу это:

QString pName = "Project1";
QUrl pathToSave = QFileDialog::getSaveFileUrl(this, tr("Select Folder"), pName, "Solution (*.sfp)");

Он устанавливает имя файла по умолчанию «Project1 / Project1.sfp». Как это можно исправить?

1 Ответ

0 голосов
/ 01 марта 2020

В вашем коде есть две проблемы. Первый: третий параметр QFileDialog::getSaveFileUrl() должен иметь тип QUrl, и вы передаете QString. Вторая проблема заключается в том, что, как сказал @jwdonahue, третий параметр - это начальный каталог, а не имя файла по умолчанию. Это может быть и другое, как сказано в документации :

Рабочий каталог диалогового окна файла будет установлен на dir . Если dir содержит имя файла, файл будет выбран.

Цитата из QFileDialog::getSaveFileName(), но в документации о QFileDialog::getSaveFileUrl() говорится :

Функция используется аналогично QFileDialog::getSaveFileName(). В частности, parent , заголовок , dir , filter , selectedFilter и options являются используется точно так же.

Возможное решение, выбрав каталог по умолчанию (в этом примере каталог пользователя "Documents") и имя файла по умолчанию = "Project1.sfp", будет что-то вроде это:

QDir docsDir(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation));
QUrl pName = QUrl::fromLocalFile(docsDir.filePath("Project1.sfp"));
QUrl pathToSave = QFileDialog::getSaveFileUrl(this, tr("Select Folder"), pName, "Solution (*.sfp)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...