Qt - okno dialogowe Save file

Stronę tą wyświetlono już: 14 razy

Okno dialogowe Save file należy do standardowych okien systemowych i jest często wykorzystywane przez programy z graficznym interfejsem użytkownika. Do wyświetlenia takiego okna często wystarczy statyczna metoda getSaveFileName klasy QFileDialog. Oto przykładowy kod:

Listing 1
  1. QString filePath = QFileDialog::getSaveFileName(
  2. this, // wskaźnik na okno rodzica (może być 0, gdy rodzica nie ma)
  3. "Save text file", // text belki tytułowej okna dialogowego
  4. QDir::homePath(), // ścieżka startowa
  5. "Graphics file (*.gif *.jpg *.jpeg *.png)" // filtr listy plików
  6. );

Ten sam efekt można uzyskać tworząc obiekt klasy QFileDialog i odpowiednio go inicjalizując. Oto przykład:

Listing 2
  1. QFileDialog saveFile(this);
  2. saveFile.setFileMode(QFileDialog::AnyFile); // ta opcja sprawia, że użytkownik może zaznaczyć tylko jeden plik (nawet nieistniejący)
  3. saveFile.setNameFilter("Graphics file (*.gif *.jpg *.jpeg *.png)");
  4. saveFile.setAcceptMode(QFileDialog::AcceptSave);
  5. QStringList fileNames;
  6. if(saveFile.exec()){
  7. fileNames = saveFile.selectedFiles();
  8. }

Jeżeli plik istnieje to program zapyta, czy na pewno chcesz go nadpisać.

Możliwe jest zastosowanie wielu grup filtrowania oto przykład:

Listing 3
  1. saveFile.setNameFilter("Graphics file (*.gif *.jpg *.jpeg *.png);;GIF (*.gif);;JPG (*.jpg *.jpeg);;PNG (*.png)");

W rezultacie w oknie dialogowym Save file dostępna będzie rozwijana lista z poniższego rysunku.

Widok listy filtrów dostępnych w oknie Open file
Rys. 1
Widok listy filtrów dostępnych w oknie Open file po zastosowaniu filtru z powyższego kodu
Strony powiązane
strony powiązane
  1. doc.qt.io/qt-5/qfiledialog.html#getOpenFileName - opis klasy QFileDialog na stronie dokumentacji Qt

Komentarze