Pregunta

Estoy intentando simplemente guardar un archivo. Sin embargo, necesito un nombre de archivo entrado sin un sufijo para obtener automáticamente un sufijo por defecto (que setDefaultSuffix () lo hace).

Yo prefiero no perder por completo el nativo de diálogo de guardar sólo para esto. exec () no está sobrecargado de QDialog, por lo que evita totalmente el gancho nativa (ignorando la opción DontUseNativeDialog incluso si es falsa).

Si desactivo la advertencia de sobreescritura de archivos y añadir el sufijo predeterminado yo después de la función regresa, entonces yo sería volver a abrir el cuadro de diálogo si el usuario no desea sobrescribir ... y eso es sólo feo.

¿Hay alguna señal que puedo coger y rápidamente se inyecte el sufijo por defecto si no está ahí? No estoy adivinando, ya que es un cuadro de diálogo nativo.

¿Hay algo que estoy haciendo mal con el filtro? Sólo tengo una opción de filtro. Se debe usar esa extensión.

Esto parece bastante escaso. El lanzamiento del diálogo Guardar y simplemente escribiendo "prueba" no debe dar lugar a un archivo sin extensión. "Prueba.", Sí. "Prueba" de ninguna manera. Que realmente va a confundir a los usuarios cuando llegan a la carga y no puede ver el archivo que acaba de guardar.

Creo que la parte multiplataforma de Qt me está dando la funcionalidad de diálogo de archivo común denominador más bajo?

¿Fue útil?

Solución

Sí, si nos fijamos en el código fuente de Qt es evidente que sólo las funciones estáticas utiliza los diálogos de archivo nativos. No es posible conseguir diálogos nativos de otra manera, por desgracia ...

Otros consejos

¿Has probado las opciones de filtro en las funciones estáticas? [Editar:. Vaya, se dio cuenta de que ya tiene]

Me acaba de intentar esto por mí mismo, por ejemplo, y las cosas parecen ser bastante razonable:

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

Introducción test en el Guardar retornos de diálogo test.txt .
Entrando prueba. en el Guardar retornos de diálogo test..txt .
Entrando test.foo en el Guardar retornos de diálogo test.foo .

Estos muestran toda la sobreescritura de diálogo apropiado si ya existe un archivo existente con ese nombre.

La única manera que puedo conseguir test , sin ningún tipo de sufijos, es rodeándola con comillas ( "prueba" ), o por la primera entrada *. * (lo que hará que se vea todos los archivos) y luego entrar en test . (Aunque una rareza es que selectedFilter todavía contendrá el filtro que se muestra en el diálogo, incluso si no se utiliza).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top