2009-12-23 23 views
9

Bir dosyayı kaydetmek ve uzantıyı (* .pdf gibi) ve bu uzantı olmadan bir adda kullanıcı türlerini belirtmek için QFileDialog10 kullanırken, kaydedilen dosyanın bu uzantı da yoktur.
Örnek-Kodu: kullanıcı adı olarak "foo" girdiğinde artık dosyası değil "foo.pdf" olarak "foo" olarak kaydedilecektir QFileDialog: dosya kaydederken uzantı otomatik olarak ekleniyor mu?

QFileDialog fileDialog(this, "Choose file to save"); 
fileDialog.setNameFilter("PDF-Files (*.pdf)"); 
fileDialog.exec(); 
QFile pdfFile(fileDialog.selectedFiles().first()); 

. Yani QFileDialog uzantısı otomatik olarak eklemez. Sorum: Bunu nasıl değiştirebilirim?

+1

Qt dokümantasyon Ben işleri çok gibi aynı şeyi gibi –

+1

görünüyor() muhtemelen QFileDialog :: setDefaultSuffix kaçırmış olabilir merak ediyorum, açık ve kapsamlıdır. Bir şey özlüyor muyum? –

+3

@Julien L .: Genellikle soruyu yanıtlamaya çalışıyorum, özellikle de bu gibi basit sorgular için soruyu sorma. Ancak, OP bağlandım ve "uzantı" için aradığım sayfayı açsaydı, yalnızca "setNameFilter" için bir örnek ve varsayılan soneklerle ilgili başka bir şey bulamazdı. –

cevap

17

Sen QFileDialog::setDefaultSuffix() kullanabilirsiniz: başka hiçbir eki belirtildi

Bu özellik dosya adına eklenen soneki tutar.

Bu özellik, zaten bir son eki yoksa dosya adına eklenecek bir dizeyi belirtir. Sonek genellikle dosya tipini belirtmek için kullanılır (ör. "Txt" bir metin dosyasını gösterir). QFileDialog :: GetSaveFileName():

+3

Birden fazla dosya türü olduğunda bu nasıl yapılabilir? örn., "Tüm Dosyalar (* .pdf * .txt) ;; PDF Dosyaları (*. pdf)" ve kullanıcı ikinci girişi, PDF Dosyaları'nı seçer? – manatttta

+1

@manatttta Tam olarak önemsiz olmasa da, 'QFileDialog' alt sınıfını kurmak, 'filterSelected()' sinyalini ilk dosya uzantısı için filtre dizesini arayan bir yuvaya bağlamak ve ardından setDefaultSuffix() 'ile çağırmak mümkün olmalıdır. . –

İlgili konular