2016-07-08 2 views

답변

2

show()은 프로그램의 다른 창에 영향을주지 않고 대화 상자를 표시합니다. open()show() 창이 + setWindowModality()을 통해 다른 창에 액세스 할 수 없도록합니다. 즉 모달 창이됩니다.

예를 들어 파일을 열 때 파일을 선택하고 대화 상자를 닫을 때까지 사용자가 프로그램에서 아무 것도 할 수 없도록하려는 경우 유용합니다.

Qt's manual에서 인용 :

모달 대화 상자는 대화입니다 동일한 응용 프로그램에 표시된 다른 윈도우에 블록 입력. 사용자로부터 파일 이름을 요청하는 데 사용되는 대화 상자 나 응용 프로그램 기본 설정을 지정하는 데 사용되는 대화 상자는 대개 모달입니다. 대화 상자는 응용 프로그램 모달 (기본값) 또는 창 모달이 될 수 있습니다.

응용 프로그램 모달 대화 상자를 열면 응용 프로그램의 다른 창에 액세스하기 전에 대화 상자와 대화를 끝내고 닫아야합니다. 창 모달 대화 상자는 대화 상자와 연결된 창에 대한 액세스 만 차단하므로 사용자는 응용 프로그램에서 다른 창을 계속 사용할 수 있습니다.

모달 대화 상자를 표시하는 가장 일반적인 방법은 exec() 함수를 호출하는 것입니다. 사용자가 대화 상자를 닫으면 exec()가 유용한 반환 값을 제공합니다. 일반적으로 대화 상자를 닫고 적절한 값을 반환하려면 기본 버튼 (예 : OK() 슬롯으로 이동하고 Cancel() 버튼을 거부() 슬롯으로 이동합니다. 또는 수락 됨 또는 거부 됨으로 done() 슬롯을 호출 할 수 있습니다. 는 문서에 명시된 바와 같이

+0

"dialog.open()"은 "dialog.setWindowModality (...); dialog.show();"와 정확히 동일합니까? –

+1

@ JanRüegg 예. 적어도 그것이 문서에서 말하는 것입니다. 나는 수동으로 정상적으로 양식을 가능케한다. –

0

직접 문서에 링크 된 것은 재미 있습니다.

QDialog::open은 윈도우를 모달로 표시합니다. QWidget::show은 창을 사용자에게 표시하도록하는 모든 QWidget 구현의 기본 메소드입니다.

대화 상자를 창 모달 대화 상자로 표시하고 즉시 반환합니다.

1

, QDialog::open()

즉시 반환, 윈도우 모달 대화 상자와 같은 대화 상자를 표시합니다.

사실 QWidget::show() 인 QDialog :: show()는 대화 상자를 표준 모덜이 아닌 위젯으로 표시합니다.