Qt - okno dialogowe Open file
Stronę tą wyświetlono już: 660 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.
