2017-05-09 123 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: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:無法調用方法'顯示'爲空' –

+0

好,所以你的'factory.createObject(root)'失敗並返回'null'?它應該像那樣工作。 – xander

+0

是的,我認爲是。但我不明白爲什麼。這可能是因爲「形式」。 –