2011-01-18 5 views
0

내 목표는 사용자가 파일 (* mp3 만 가능)을 선택하고 두 번 클릭하면 재생해야합니다 (파일에 대한 QString을 play() 함수에 보내야 함) 먼저 작업을 시작했습니다. QTreeView를 사용하지만 파일이 선택되면 신호가 있습니다.위젯으로 사용되는 QFileDialog

그래서 QFileDialog를 만들고 MainWindow에 내장 된 위젯으로 사용하기로 결정했습니다. 유일한 문제는 두 번 클릭하면 사라집니다. 그것을 피할 수 있습니까?

일부 QDialog :: finished() 신호 또는 QDialog :: done()을 사용해야합니까?

+0

QDialog를 위젯으로 포함하면 정말 어색한 UI가됩니다. QTreeView :: doubleClicked (const QModelIndex &) (QAbstractItemView에서 상속)는 필요한 것을 수행해야합니다. –

답변

3

먼저 QTreeView에서 두 번 클릭 신호를받을 수 있습니다. 그건 :

void doubleClicked(const QModelIndex & index); 

둘째, 당신이 정말로 QFileDialog 그런 식으로 먼저 재정의 closeEvent (QCloseEvent * 이벤트)를 사용하려는 경우. 내부에서 대화 상자를 닫으려면 event-> accept();를 수행하고 그렇지 않으면 event-> ignore();를 수행하십시오. QFileDialog에 연결 :: currentChanged (const QString & 경로); 사용자가 두 번 클릭하는 파일 이름을 가져옵니다. 마지막으로 힙 (QFileDialog)을 스택 (로컬)이 아닌 새로 작성하여 QFileDialog를 만들고 exec() 대신 show()를 호출해야합니다.

부모 (this)와 함께 제공 할 수 있으며 나중에 삭제할 필요가 없음을 기억하십시오.

1
connect(file_dialog, SIGNAL(finished(int)), file_dialog, SLOT(open())); 

이것은 제대로 작동하는 것 같습니다. 기하 도형은 고정 된 채로 마지막 경로를 알았습니다.

관련 문제