Класс QFileDialog предоставляет диалоговое окно позволяющее пользователям выбирать файлы или директории.

Класс QFileDialog позволяет пользователю перемещаться по иерархическим уровням файловой системы для выбора одного или нескольких файлов (директорий).

Самым простым способом создать диалоговое окно QFileDialog является использование статических функций.

$fileName = QFileDialog::getOpenFileName($this,
    "Открыть изображение", "C:/Users/Alexey", "Файлы изображений (*.png *.jpg *.bmp)");

В приведенном примере модальный QFileDialog создается с помощью статической функции. Изначально диалоговое окно отображает содержимое указанной директории "C:/Users/Alexey" и отображает файлы соответствующие установленному фильтру (*.png *.jpg *.bmp).

Если требуется установить несколько фильтров, то каждый фильтр разделяется двойным символом точки с запятой ";", например:

$filter = "Изображения (*.png *.xpm *.jpg);;Тестовые файлы (*.txt);;Файлы XML (*.xml)";

QFileDialog можно создать без использования статических функций. Для того, чтобы указать что должен выбрать пользователь в диалоговом окне, следует воспользоваться методом setFileMode():

$dialog = new QFileDialog;
dialog->setFileMode(QFileDialog::AnyFile);

В приведенном примере режим выбора файлов установлен в AnyFile - что означает, что пользователь может выбрать любой файл и даже указать на несуществующий файл. Такой режим может быть полезен при создании диалогового окна "Сохранить как".

Список режимов выбора файл:

Константа Значение Описание
QFileDialog::AnyFile 0 Имя файла независимо от того существует файл или нет.
QFileDialog::ExistingFile 1 Имя одного существующего файла.
QFileDialog::Directory 2 Имя директории. Отображаются и файлы и директории. Однако, нативное окно Windows не поддерживает отображение файлов при выборе директории.
QFileDialog::ExistingFiles 3 Имена нескольких существующих файлов.
QFileDialog::DirectoryOnly 4 Использует для отображения режим Directory и включенную опцию ShowDirsOnly.

Методы

voidgetExistingDirectory ( QWidget parent = 0, string caption = NULL, string dir = NULL, Options options = ShowDirsOnly )
stringgetOpenFileName ( QWidget $parent = 0, string $caption = NULL, string $dir = NULL, string $filter = NULL, Options $options = NULL )
voidgetSaveFileName ( QWidget parent = 0, string caption = NULL, string dir = NULL, string filter = NULL, Options options = NULL )
voidsetFileMode ( FileMode mode )
voidsetNameFilter ( string filter )
voidsetViewMode ( ViewMode mode )

Описание методов

void QFileDialog::getExistingDirectory ( QWidget parent = 0, string caption = NULL, string dir = NULL, Options options = ShowDirsOnly )  

string QFileDialog::getOpenFileName ( QWidget $parent = 0, string $caption = NULL, string $dir = NULL, string $filter = NULL, Options $options = NULL )  

Открывает окно диалога выбора файла по установленному фильтру

$defaultDirectory = "C:/Program Files";
$filter = "Текстовый файл (*.txt)";

$filepath = QFileDialog::getOpenFileName( $parent_window, 
                                          "Выберите файл", 
                                          $defaultDirectory,
                                          $filter );

if (empty($file)) {
    // файл не выбран
}
else {
    // файл выбран
    $text = file_get_context( $filepath );
}

void QFileDialog::getSaveFileName ( QWidget parent = 0, string caption = NULL, string dir = NULL, string filter = NULL, Options options = NULL )  

void QFileDialog::setFileMode ( FileMode mode )  

void QFileDialog::setNameFilter ( string filter )  

void QFileDialog::setViewMode ( ViewMode mode )  

comments powered by HyperComments