Qt - okno dialogowe Open file

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2972 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
Propozycje książek