2012-01-11 4 views
1

Qt Creator를 사용하여 Linux에서 컴파일 중입니다. 이미 Qt Designer를 사용하여 GUI의 기본 사항을 완료했습니다. 이제 내가 사용할 수있는 방법이 파일 관리자를 열고 나에게 이름 붙여진 디렉토리를 만들 수 있는지 알아야합니까? 파일 관리자가있는 빈 디렉토리를 만드는 방법

난이 발견

QFileDialog dialog(this); 
dialog.setFileMode(QFileDialog::AnyFile); 

(http://doc.qt.io/archives/qt-4.7/qfiledialog.html#directory 참조) I에있어서와 QPushButton을 연결하고 상기에 쓴 한

. 문제 : 버튼을 누르면 파일 관리자가 열리지 않습니다. 게다가 이것은 존재하지 않는 파일 (AnyFile을보십시오)을 생성하기 위해서만 작동해야합니다, 그러나 나는 존재하지 않는 디렉토리를 생성 할 필요가 있습니다.

은 또한 디렉토리를 만들기위한이 가능성을 알고 :

QDir("/home/name").mkdir("NewDirectory"); 

을하지만 이름과 디렉토리는 항상 동일하기 때문에이 내 요구를 충족하지 않습니다. 당신은 몇 가지 변수를 필요로

: 여기

답변

1

는 존재하지 않는 폴더/파일의 문제를 해결하기위한의

QString path_trunk; 
QString name; 

와 버튼으로 호출되는 슬롯에 당신이를 조정해야합니다

매개 변수를 사용하여 사용자의 요구 사항에 맞 춥니 다. 예 : 버튼을 통해 전달되거나 일부 내부 이벤트에 의해 조작되는 매개 변수를 사용할 수 있습니다. 이 경우 당신은 물론 동적 변수를 사용을 통해 폴더를 만들 수 있습니다

path_trunk = QString("/home/username/"); 
name = QString("Folder_name"); 

QDir(path_trunk).mkdir(name); 

또 다른, 더 사용자 친화적 인 방법은 사용자가 입력 할 수있는 라인/텍스트 편집 요소를 통해 UI의 값을 가져 오는 것 맞춤 경로. UI 클래스를 통해 값을 읽을 수 있습니다 (여기에서는 표준 QT 이름 ui를 사용했습니다). lineEdit이라는 이름은 귀하의 이름을 다르게 정하면 귀하의 경우 다를 수 있습니다. 그럼에도 불구하고 데이터에 액세스하여 기본 코드에서 ID를 동적으로 사용할 수 있습니다. 신호와 방법을 올바르게 연결하십시오.

void MainWindow::on_pushButton_clicked_path_dynamic() 
{ 
    QString temp_path = ui->lineEdit->text(); 
    QDir().mkdir(temp_path); 
} 

void MainWindow::on_pushButton_clicked_trunk_plus_dynamic() 
{ 
    QString ext_path = ui->lineEdit->text(); 
    QDir(path_trunk).mkdir(ext_path); 
} 

은 여기 내 이해에서 파일 관리자의 일종을 사용하고자하기 때문에, 다른 접근 방식 :

당신이 실제로 할 수있는 것은 자신의 파일 관리자 위젯을 생성하는 것입니다. QDir 메서드는 기본적으로 폴더를 표시하는 데 필요한 모든 정보를 제공합니다. 일부 Item-based QTreeWidget에있는 파일을 탐색하는 경우에도 QTreeWidget의 신호와 슬롯을 탐색 할 수 있기 때문에 쉽게 탐색 할 수 있습니다. 폴더 정보로 트리를 채워 넣으면됩니다. 새 폴더를 만드는 것은 사용자 상호 작용 일뿐입니다 (오른쪽 마우스 버튼 또는 QPushButton "폴더 만들기"를 사용자 정의 파일 관리자 위젯에서 클릭)

+0

그게 도움이 되었습니까? 도움이 되었다면 유용한/해결책으로 표시하거나 상향 표 시하는 것이 좋습니다. – mmoment

+0

먼저 답장을 보내주십시오. 첫 번째 방법은 내가 작성한 두 번째 코드와 비슷합니다. 두 번째 아이디어는 흥미 롭습니다. 두 개의 UI LineEdit에서 이름과 경로를 가져 오려고합니다. 이것도 좋은 생각이지만 파일 관리자를 열어 파일 관리자를 사용하여 디렉토리를 만들 수 없는지 물어보아야합니다. 파일 관리자는 훨씬 더 사용자 친화적이기 때문입니다. :) 나는 15 개의 평판이 없기 때문에 나는 당신의 답을 upvote 할 수 없다. – Streight

관련 문제