Привет, ЛОР.
У кутешного класса QDocumentWriter есть метод supportedDocumentFormats(), который возвращает список поддерживаемых форматов документов. Список возвращается в виде человекочитаемых условных имён (markdown, plaintext…). При этом сам QDocumentWriter по умолчанию использует формат, извлечённый из имени файла, например, если задано имя foo.odt, используется формат ODF.
Есть ли какой-то способ по имени формата определить связанные с ним суффиксы имён файлов? Например, чтобы пользователь мог выбрать этот формат прямо в QFileDialog, как это в десктопных приложениях обычно делается.
У меня сейчас на уме 2 варианта.
-
Зашить это соответствие (хоть через
std::map) прямо в программу и делатьQTextDocumentWriter::setFormat()из программы в зависимости от суффикса. Благо сейчас форматов всего 4: plaintext, HTML, ODF и markdown. И это будет именно тот UX, к которым привыкло большинство десктоп-пользователей. Но во-первых, меня не покидает ощущение, что я делаю что-то некрасивое, а во-вторых, в новых версиях Qt номенклатура форматов может поменяться. -
Выбирать формат отдельным комбобоксом ещё до выбора имени файла. Это некрасиво и избыточно для пользователя. Ну и есть подозрение, что суффикс всё равно придётся подставлять руками (хотя тут надо проверять, может, QTextDocumentWriter это умеет делать сам).
Интерес пользователя для меня в приоритете. Поэтому, скорее всего, в своём проекте пойду по варианту 1, наплевав на красоту архитектуры. Но может, есть другое решение? Чтобы и овцы были целы, и волки сыты, и пастуху вечная память?



