티스토리 뷰

C | C++

QFileDialog 클래스(QT C++)

야라바 2024. 3. 24. 08:51
728x90

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)
 : 파일 선택에 사용하는 필터 조회 및 설정.

 

 

728x90

'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