목적
Qt Creator를 활용, 사용자가 폴더 오픈 버튼을 클릭하여 폴더를 선택하면 선택된 폴더 경로를 수집
테스트 환경
Windows 10 / C++ / Qt 5.15.2 / Qt Creator 4.13.3
버튼 생성
프로젝트 생성
Qt Creator를 실행하고 프로젝트를 생성한다.
mainwindow.ui
버튼을 생성하기 위해 ui를 수정한다.
프로젝트 생성 시 별도로 수정했다면 아래 파일 이름은 다를 수 있다.
mainwindow.ui를 더블클릭한다.
mainwindow.ui에서 Push Button을 ui로 드래그한다.
생성된 버튼을 더블클릭하여 보여지는 텍스트를 변경할 수 있으며, Object의 pushButton을 수정하여 소스코드의 객체 이름을 수정할 수 있다. 각각 open으로 수정한다.
버튼을 클릭했을 때 특정 함수가 실행되게 할 수 있다.
버튼을 우클릭한 후 Go to slot을 선택한다.
clicked()를 선택한 후 OK를 클릭한다.
mainwindow.cpp에 on_open_clicked()함수가 생성된다. 이제 open 버튼을 클릭하면 이 함수가 실행된다.
이 함수에 폴더를 여는 코드를 입력하여야 한다.
폴더 선택
mainwindow.cpp
폴더를 선택하는 함수는 QFileDialog 클래스를 사용한다. 최상단에 이 클래스를 포함한다.
#include <QFileDialog> // 입력
만들어진 on_open_clicked() 함수 내에 폴더를 선택하는 함수인 getExistingDirectory를 사용한다.\
QFileDialog::getExistingDirectory(부모객체, 창 이름, 시작 위치, 옵션)
void MainWindow::on_open_clicked() { QFileDialog::getExistingDirectory(this, "Search Folder", QDir::homePath(),QFileDialog::ShowDirsOnly); }
시작 위치는 “c:/”과 같이 경로를 직접입력할 수 있다.
옵션이 현재 QfileDialog::ShowDirsOnly가 포함되어 있는데, 이는 Qt에서 권장하고 있다. 이 옵션을 제거했을 때 달라지는 점이 무엇인지는 모르겠다.
Run을 한 후 open 버튼을 클릭하면 파일 선택 창이 뜬다.
선택된 폴더 경로 얻기
getExistingDirectory() 함수의 리턴값은 선택된 폴더의 경로다.
폴더의 경로를 qDebug()로 출력한다.
void MainWindow::on_open_clicked() { QString searchLocation = QFileDialog::getExistingDirectory(this, "Search Folder", QDir::homePath(),QFileDialog::ShowDirsOnly); qDebug() << searchLocation; }
참고
https://doc.qt.io/qt-5/qfiledialog.html#getExistingDirectory