Укажите расширение по умолчанию в QFileDialog :: getSaveFileName - PullRequest
5 голосов
/ 29 августа 2011

Существует ли эквивалент элемента lpstrDefExt структуры OPENFILENAME, используемого в функции Win32 GetSaveFileName?

Вот описание MSDN:

LPCTSTR lpstrDefExt

* 1007расширение по умолчанию.GetOpenFileName и GetSaveFileName добавляют это расширение к имени файла, если пользователь не может ввести расширение.Эта строка может быть любой длины, но добавляются только первые три символа.Строка не должна содержать точку (.).Если этот член имеет значение NULL и пользователь не может ввести расширение, расширение не добавляется.

Так что, если для lpstrDefExt установлено значение "txt" и пользователь вводит "myfile" вместо "myfile.txt"", функция все еще возвращает" myfile.txt ".

Ответы [ 2 ]

6 голосов
/ 09 апреля 2013

Qt извлечет расширение по умолчанию из параметра selectedFilter, если он указан.

Вот пример:

QString filter = "Worksheet Files (*.abd)";
QString filePath = QFileDialog::getSaveFileName(GetQtMainFrame(), tr("Save Worksheet"), defaultDir, filter, &filter);

При использовании этого кода метод getSaveFileName () автоматически добавит расширение файла ".abd", если пользователь не указал его в диалоговом окне.,Вы можете увидеть реализацию этого в qt_win_get_save_file_name () внутри исходного файла Qt «qfiledialog_win.cpp».

К сожалению, это не работает для метода getOpenFileName ().

0 голосов
/ 29 августа 2011

Не уверен, что именно LPCTSTR пытается сделать lpstrDefExt, но документация Qt дает следующий пример

 QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                            "/home/jana/untitled.png",
                            tr("Images (*.png *.xpm *.jpg)"));

http://doc.qt.io/qt-5/qfiledialog.html#getSaveFileName

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...