2013-04-24 5 views
9

Non riesco a modificare la directory corrente con QFileDialog con Qt 4.8. Lo stesso codice funziona bene su Windows e Mac OS 10.6 Snow Leopard. Funziona bene anche se non utilizzo la finestra di dialogo nativa di Mac OS X.QFileDialog :: getOpenFileName non imposta la directory iniziale su Mac OS 10.8 Mountain Lion

Questo funziona:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop",QString(),0,QFileDialog::DontUseNativeDialog); 

Questo non funziona:

fn=QFileDialog::getOpenFileName(this,"Select File","/Users/myuser/Desktop"); 

Sembra che se la maggior parte del tempo si apre l'ultimo percorso dell'ultima chiamata a GetOpenFileName.

risposta

5

Questo è un bug in Qt che è stato riportato in Qt 5.0.1 e Qt 4.8.4 (anche se sembra che sia ancora riproducibile in 4.8.4 da persone (me compreso)).

Questo errore è stato segnalato in JIRA come QTBUG-20771, QTBUG-28161 e infine QTBUG-35779 (che sembra aver finalmente risolto completamente il problema in Qt 5.2.1). Ecco un collegamento alla patch in Gerrit.

+0

Grazie! Ho cercato il bug tracker Qt, ma non ho trovato quelli 2. –

+0

ANCORA abbiamo lo stesso buggy qui .. su QT 5.8 – vivi

7

Ho riscontrato lo stesso problema con Qt5.2.0 su Mavericks ... Ho trovato un problema: aggiungi un nome fittizio alla directory che vuoi selezionare. Tuttavia, assicurati di non farlo su Windows perché l'utente lo vedrà.

QString dir = "/Users/myuser/Desktop"; 
#if defined(__APPLE__) 
dir += "/MyFile.txt"; 
#endif 
fn = QFileDialog::getOpenFileName(this, "Select File", dir); 

Inoltre, per quelli come me che istanziare una finestra di dialogo perché hanno bisogno di più opzioni è anche possibile fare:

QFileDialog fileDialog(this, "Select File"); 
#if defined(__APPLE__) 
fileDialog.selectFile(dir + "/MyFile.txt"); 
#else 
fileDialog.setDirectory(dir); 
#endif 
... 
+0

lo stesso ancora buggy qui .. su QT 5.8 – vivi