Pergunta

Estou tentando simplesmente salvar um arquivo. No entanto, preciso de um nome de arquivo inserido sem um sufixo para obter automaticamente um sufixo padrão (que o setDefaultSuffix () faz).

Prefiro não perder completamente o diálogo de salvamento nativo apenas para isso. O EXEC () não está sobrecarregado do qdialog, por isso ignora totalmente o gancho nativo (ignorando a opção Dontusenativedialog, mesmo que seja falsa).

Se eu desativar o aviso de substituição do arquivo e anexar o sufixo padrão após o retorno da função, estaria reabrindo a caixa de diálogo se o usuário não quisesse substituir ... e isso é apenas feio.

Existe algum sinal que eu possa pegar e injetar rapidamente o sufixo padrão se não estiver lá? Acho que não, já que é uma caixa de diálogo nativa.

Há algo que estou fazendo de errado com o filtro? Eu só tenho uma escolha de filtro. Deve usar essa extensão.

Isso parece muito coxo. O lançamento da caixa de diálogo Salvar e simplesmente digitar "teste" nunca deve resultar em um arquivo sem extensão. "Teste.", Sim. "Teste" de jeito nenhum. Isso realmente confundirá os usuários quando eles acertarem a carga e não conseguem ver o arquivo que acabaram de salvar.

Eu acho que a parte da plataforma cruzada do QT está me dando mais baixa funcionalidade de diálogo de arquivo de denominador comum?

Foi útil?

Solução

Sim, se você olhar para o código -fonte QT, é evidente que apenas as funções estáticas usam diálogos de arquivo nativo. Não é possível obter diálogos nativos de outra maneira, infelizmente ...

Outras dicas

Você já experimentou as opções de filtro nas funções estáticas? [Editar: Oops, notei que você já tem.

Eu apenas tentei isso eu mesmo, por exemplo, e as coisas parecem bastante razoáveis:

QString filter = "Text files (*.txt)";
QString selectedFilter;
QString filename = QFileDialog::getSaveFileName(0, "", "", filter, &selectedFilter);

Entrando teste na caixa de diálogo salvar retornos test.txt.
Entrando teste. na caixa de diálogo salvar retornos teste..txt.
Entrando test.foo na caixa de diálogo salvar retornos test.foo.

Tudo isso mostra a caixa de diálogo de substituição apropriada se já existir um arquivo existente com esse nome.

A única maneira de conseguir teste, sem sufixos, está ao redor com citações ("teste"), ou primeiro entrando *.* (que fará com que ele exiba todos os arquivos) e depois digitando teste. (Embora uma estranheza seja que selectedFilter ainda conterá o filtro mostrado na caixa de diálogo, mesmo que não seja usado).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top