티스토리 뷰
QFileDialog 클래스는 파일 시스템에서 하나의 파일이나 여러 개의 파일, 또는 디렉터리를 편리하게 선택할 수 있도록 해준다. QWidget < QDialog를 상속한다.
참조 링크 : https://doc.qt.io/qt-5/qfiledialog.html
QFileDialog *fileDlg = new QFileDialog(owner());
fileDlg->setFileMode(QFileDialog::ExistingFiles);
fileDlg->setAcceptMode(QFileDialog::AcceptOpen);
fileDlg->setWindowTitle(_("Loading the media"));
fileDlg->setNameFilter(_("Images (*.png *.gif *.jpg *.jpeg)"));
if (fileDlg->exec() && !fileDlg->selectedFiles().empty()) {
QStringList fnames = fileDlg->selectedFiles();
for (int fi = 0; fi < fnames.size(); fi ++) {
QFile file(fnames[fi]);
if (!file.open(QFile::ReadOnly)) continue;
if (file.size() >= USER_FILE_LIMIT)
{
file.close();
continue;
}
QMimeDatabase db;
QMimeType mimetype = db.mimeTypeForFile(fnames[fi]);
if (mimetype.isDefault() || (!mimetype.inherits("image/jpeg") &&
!mimetype.inherits("image/png") && !mimetype.inherits("image/gif"))) {
file.close();
continue;
}
file.close();
}
}
위의 코드는 폴더에서 이미지 파일들을 선택받는 예제로 연관된 주요 함수와 슬롯은 다음과 같다.
QFileDialog(QWidget *parent = nullptr, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString())
QFileDialog(QWidget *parent, Qt::WindowFlags flags) : 생성자에 제목, 시작 폴더, 필터등을 설정할 수도 있고 추후 설정도 가능하다.
QString labelText(QFileDialog::DialogLabel label)
void setLabelText(QFileDialog::DialogLabel label, const QString &text) : 지정 레이블의 텍스트 조회 및 설정.
레이블 지정 방법 : QFileDialog::LookIn, FileName, FileType, Accept, Reject
QDir directory() const
QUrl directoryUrl() const
void setDirectory(const QString &directory)
void setDirectory(const QDir &directory)
void setDirectoryUrl(const QUrl &directory) : 현재 디렉터리 조회 및 설정.
QFileDialog::FileMode fileMode() const
void setFileMode(QFileDialog::FileMode mode) : 대화창 동작 방식을 다음과 같이 지정.
QFileDialog::AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly, ShowDirsOnly, DontResolveSymlinks, DontConfirmOverwrite, DontUseNativeDialog, ReadOnly, HideNameFilterDetails, DontUseSheet, DontUseCustomDirectoryIcons
QFileDialog::AcceptMode acceptMode() const
void setAcceptMode(QFileDialog::AcceptMode mode) : 대화창 동작 방식. QFileDialog::AcceptOpen, AcceptSave
QDir::Filters filter() const
QStringList mimeTypeFilters() const
QStringList nameFilters() const
void selectMimeTypeFilter(const QString &filter)
void selectNameFilter(const QString &filter)
void setFilter(QDir::Filters filters)
void setMimeTypeFilters(const QStringList &filters)
void setNameFilter(const QString &filter)
void setNameFilters(const QStringList &filters) : 파일 선택에 사용하는 필터 조회 및 설정.
'C | C++' 카테고리의 다른 글
QPainter 클래스(QT C++) (0) | 2024.03.24 |
---|---|
QVariant 클래스(QT C++) (0) | 2024.03.19 |
QSettings 클래스(QT C++) (0) | 2024.03.18 |
QGraphicsItem 클래스(QT C++) (0) | 2024.03.14 |
QGraphicsScene 클래스(QT C++) (0) | 2024.03.13 |