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: