2017-09-27 10 views
1

Window 플래그가있는 대화 상자가 WindowStaysonTopHint로 여러 개 있습니다. QFileDialog를 열면이 대화 상자의 맨 아래에 표시됩니다. QFileDialog에 대해 Window Flag를 설정하는 방법. 상단에 대화 상자를 표시하려면 다음 코드를 사용하지만 작동하지 않습니다.QFile 대화 상자가 상단에 표시되지 않습니다.

> QFileDialog *dialog=new QFileDialog(this); 
> 
> dialog->setWindowModality(Qt::ApplicationModal); 
> 
> dialog->setModal(true); 
> dialog->setWindowFlags(Qt::WindowStaysonTopHint); 
> dialog->getExisitngDirectory(this,tr("Directory"),"\home",QFileDialog::ShowDirsOnly); 

답변

2

QFileDialog::getExistingDirectory()는 정적 함수이 코드가 보일 수 있습니다로는 예를 dialog에 호출되지 않습니다 것을 의미합니다. 이것은 또한 dialog 인스턴스에서 호출 한 함수가 아무런 효과가 없다는 것을 의미합니다.

설명서에 "getExistingDirectory()은 편의 기능입니다 ..."라는 문구가 표시되어 있으므로 QFileDialog의 인스턴스를 사용하면 동일한 효과를 얻을 수 있습니다. getExistingDirectory()의 소스 코드는 비슷한 일을하고 WindowFlags 당신의 설정을 추가 할 필요가 그래서이

QFileDialogArgs args; 
args.parent = parent; 
args.caption = caption; 
args.directory = QFileDialogPrivate::workingDirectory(dir); 
args.mode = (options & ShowDirsOnly ? DirectoryOnly : Directory); 
args.options = options; 
// create a qt dialog 
QFileDialog dialog(args); 
if (dialog.exec() == QDialog::Accepted) { 
    return dialog.selectedFiles().value(0); 
} 
return QString(); 

같은 다소 보인다. 다음과 같이 보일 수 있습니다 (테스트하지 않았습니다) :

+0

불완전한 형식이 허용되지 않는 오류가 발생하면 QFileDialogArgs의 포함 파일을 알려주십시오. qfiledialog_p.h 시도했지만 발견되지 않는다고합니다. – Veera

+0

코드의이 부분은 Qt (즉, 접미사 _p.h)에 비공개로 표시되지만 다른 생성자를 사용하여 동일한 효과를 가져와야합니다. 나는 대답을 업데이트 할 것이다. –

+0

그 것이 좋을 것입니다! – Veera