2013-03-14 29 views
8

Próbuję utworzyć okno dialogowe "Zapisz jako ..." w Mac OS X. Ale nie chcę używać funkcji QFileDialog::getSaveFileName(), ponieważ okno dialogowe to utworzone przez tę funkcję jest NOT prawdziwie natywne w Mac OS X Lion. Więc ja decyduję stworzyć dialog jako QFileDialog obiektu:QFileDialog: jak ustawić domyślną nazwę pliku w oknie dialogowym "Zapisz jako ..."

auto export_dialog(new QFileDialog(main_window)); 
export_dialog->setWindowModality(Qt::WindowModal); 
export_dialog->setFileMode(QFileDialog::AnyFile); 
export_dialog->setAcceptMode(QFileDialog::AcceptSave); 

Wszystko działa dobrze, z wyjątkiem jednego problemu. Nie mogę ustawić domyślnej nazwy dla zapisanego pliku, więc użytkownik musi wpisać tę nazwę ręcznie za każdym razem. Wiem, że funkcja QFileDialog::getSaveFileName() pozwala ustawić domyślną nazwę pliku poprzez trzeci argument, dir (http://qt-project.org/doc/qt-4.8/qfiledialog.html#getSaveFileName). Ale jak ustawić tę domyślną nazwę bez tej funkcji?

Można ustawić domyślny sufiks dla zapisanego pliku za pomocą funkcji QFileDialog::setDefaultSuffix(), ale muszę ustawić całą domyślną nazwę, nie tylko domyślny sufiks.

Próbowałem użyć funkcji QFileDialog::setDirectory(), ale ustawia ona tylko katalog, w którym ma być zapisany, bez nazwy zapisanego pliku.

Używam Qt 4.8.1 na Mac OS X Lion.

Z góry dziękuję za pomoc.

+3

Pytanie jest usuwany. Zauważyłem, że domyślną nazwę pliku można ustawić za pomocą funkcji QFileDialog :: selectFile(). Dziękuję Ci. –

+2

Nie ma problemu z usuwaniem. Jeśli ktoś w przyszłości znajdzie ten sam problem, jak może znaleźć odpowiedź? –

+0

Znalazłem go tutaj: http://www.qtcentre.org/threads/49434-QFileDialog-set-default-name?highlight=QFileDialog. –

Odpowiedz

2

Szukałem google pod numerem set default filename qfiledialog i wydarzyło się w tej dyskusji.

Zauważyłem, że używanie selectFile("myFileName"); działa tylko wtedy, gdy plik rzeczywiście istnieje. W moim przypadku celem jest utworzenie nowego pliku z opcją zastąpienia istniejącego pliku.

Rozwiązanie, które działa mi (Qt 5.3.2) następująco:

QFileDialog svDlg; 

QString saveFileName = svDlg.getSaveFileName(this, caption, preferredName, filter); 

W powyższym przykładzie, preferredName jest QString zawierający „C:/wstępnie wybrany-nazwę. txt”

nadzieję, że pomoże