2017-05-09 4 views
0

내가 QML의 메인 윈도우가 작동하지 않는 나는 내가 button에을 클릭 때, modal window 팝업 수있는합니다.모달 창

나는 it is not working 그러나이 시도하고 나는 이유를 이해하지 않습니다

Rectangle { 
    id: root 

    ... 

    Button { 
     onClicked: { 
      var factory = Qt.createComponent("DialogWindow.qml"); 
      var dialog = factory.createObject(root); 
      dialog.show(); 
     } 
    } 
} 

main.qml

Window { //I also tried "Dialog" 
    height: 240 
    width: 320 
    title: qsTr("Popup") 
    visible: true 
    modality: 1 

    ListView{ 
     //My stuff 
    } 
} 

DialogWindow.qml

을 그리고 여기에 오류가 :

TypeError: Cannot call method 'show' of null 

내가 뭘 잘못하고 있니?

+0

당신이이'가로해야 Dialog' 사용하는 경우 [기본적으로 모달 (http://doc.qt.io/qt-5/qml-qtquick-dialogs-dialog.html#modality-prop) - 내가 modality를 전혀 망치지 않는다면 그것은 완벽하게 작동합니다. 'modality : 1'을 설정하면'잘못된 속성 할당 : 알 수없는 열거'오류가 발생합니다. 'modality : Qt.WindowModal'에서는 다시 괜찮습니다. 'Qt.ApplicationModal'도 마찬가지입니다. – derM

답변

1

당신이 modal의 때에 프로퍼티의 문서가이

Possible values are Qt.NonModal (the default), Qt.WindowModal, and Qt.ApplicationModal.

이 왜 대신 0 또는 1 하드의 사용하지 않는라고 읽는다면?

modality: Qt.ApplicationModal 
+0

안녕하세요, 사실이 스레드 예제에서는 실수였습니다. 'dialog.show()'를 쓰면 다음과 같은 오류가 발생합니다.'TypeError : 'show'of null ' –

+0

을 호출 할 수 없으므로'factory.createObject (root)'가 실패하고'null'을 반환합니까? 그것은 그렇게 작동해야합니다. – xander

+0

네, 그렇게 생각합니다. 그러나 나는 왜 그런지 이해하지 못한다. 이것은 아마도 '모달'때문일 것입니다. –