Domanda

Sto cercando di salvare semplicemente un file. Tuttavia, ho bisogno di un nome di file inserito senza suffisso automaticamente ottenere un suffisso predefinito (che setDefaultSuffix () fa).

preferirei non completamente perdere il nativo finestra di salvataggio solo per questo. exec () non è sovraccaricato da QDialog, in modo che bypassa completamente il gancio nativo (ignorando l'opzione DontUseNativeDialog anche se è falso).

Se io disattivare l'avviso di sovrascrittura di file e aggiungere il suffisso predefinito me stesso dopo la funzione ritorna, allora sarei ri-aprire la finestra di dialogo se l'utente non ha voluto sovrascrivere ... e questo è solo brutto.

C'è qualche segnale che posso prendere e rapidamente iniettare il suffisso di default se non è lì? Non sto cercando di indovinare, dal momento che è una finestra nativa.

C'è qualcosa che sto facendo male con il filtro? Ho solo una scelta del filtro. Dovrebbe utilizzare tale estensione.

Questo sembra piuttosto scadente. Avvio del salvataggio di dialogo e semplicemente digitando "test" non dovrebbe mai portare a un file senza estensione. "Test"., Sì. "Test" nessun modo. Che sarà davvero confondere gli utenti quando hanno colpito di carico e non può vedere il file hanno appena salvato.

Credo che la parte multi-piattaforma di Qt mi sta dando la funzionalità più basso dialogo file comune denominatore?

È stato utile?

Soluzione

Sì, se si guarda il codice sorgente di Qt è evidente che solo le funzioni statiche utilizza finestre di dialogo di file nativi. Non è possibile ottenere le finestre di dialogo native qualsiasi altro modo, purtroppo ...

Altri suggerimenti

Hai provato le opzioni del filtro nelle funzioni statiche? [Edit:. Ops, notato che hai già]

Ho appena provato questo me stesso, per esempio, e le cose sembrano essere abbastanza ragionevole:

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

Entrare test nel risparmio rendimenti di dialogo test.txt .
Entrando di prova. nel risparmio rendimenti di dialogo test..txt .
Entrando test.foo nel risparmio rendimenti di dialogo test.foo .

Questi mostrano tutta la finestra di dialogo sovrascrittura se esiste già un file esistente con lo stesso nome.

L'unico modo che posso ottenere test , senza suffissi, è circondandolo con virgolette ( "test" ), o immettendo prima *. * (che renderà visualizzare tutti i file) e quindi immettendo test . (Anche se uno stranezza è che selectedFilter conterrà ancora il filtro mostrato nella finestra di dialogo, anche se non è utilizzato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top