Autor podstrony: Krzysztof Zajączkowski

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

Okno dialogowe Open file jest jednym z częściej wykorzystywanych okien standardowych w programach z graficznym interfejsem użytkownika. Warto jest więc się zapoznać z możliwościami jego wywoływania. W tym celu konieczne jest załączenie pliku QFileDialog, w którym znajduje się klasa QFileDialog. Najprostszym sposobem wywołania okna Open file jest wykorzystanie statycznej metody getOpenFileName, która tworzy okno Open file a po jego zamknięciu zwraca nazwę zaznaczonego pliku. Oto przykładowy kod:

QString filePath = QFileDialog::getOpenFileName( this, // wskaźnik na rodzica (może być 0, gdy rodzica nie ma) "Open image file", // Text belki tytułowej okna dialogowego QDir::homePath(), // ścieżka startowa "Graphics file (*.gif *.jpg *.jpeg *.png)" // filtr plików );

Czasami jednak zachodzi potrzeba udostępnienia możliwości zaznaczenia wielu plików, wtedy z pomocą przychodzi statyczna metoda getOpenFileNames, która dla odmiany zwraca obiekt klasy QStringList:

QStringList filePaths = QFileDialog::getOpenFileNames( this, // wskaźnik na rodzica (może być 0, gdy rodzica nie ma) "Open image file", // Text belki tytułowej okna dialogowego QDir::homePath(), // ścieżka startowa "Graphics file (*.gif *.jpg *.jpeg *.png)" // filtr plików );

Czasami jednak takie uproszczone wywołanie tego okna dialogowego nie dostarcza odpowiedniej kontroli nad jego zachowaniem. Można wtedy utworzyć obiekt klasy QFileDialog:

QFileDialog openFile(this); openFile.setFileMode(QFileDialog::AnyFile); // ta opcja sprawia, że użytkownik może zaznaczyć dowolny plik a nawet plik, który nie istnieje openFile.setNameFilter("Graphics file (*.gif *.jpg *.jpeg *.png)"); QStringList fileNames; if(openFile.exec()){ fileNames = openFile.selectedFiles(); }

Jeżeli chodzi o filtrowanie plików, można utworzyć listę grup w następujący sposób:

openFile.setNameFilter("Graphics file (*.gif *.jpg *.jpeg *.png);;GIF (*.gif);;JPG (*.jpg *.jpeg);;PNG (*.png)");

W rezultacie w oknie dialogowym Open 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
Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.