2017-05-07 13 views
0

QML에 탭으로 된 Dialog을 구현하여 초기 값으로 재설정하는 방법이 있습니다.탭뷰가있는 QML 재설정 대화 상자

탭이 동적으로 인스턴스화되기 때문에 어떤 직설적 인 방법도 작동하지 않는 것 같습니다.학부모는 Combobox 내부를 참조 할 수 없으며 Combobox은 외부 Dialog을 참조 할 수 없습니다. 어떻게이 일을 성취 할 수 있습니까?

import QtQuick 2.3 
import QtQuick.Controls 1.4 
import QtQuick.Dialogs 1.2 
import QtQuick.Layouts 1.1 

Dialog { 
    id: dlg 
    title: "Settings" 
    visible: true 
    standardButtons: StandardButton.Apply | StandardButton.Reset 
    property string val: "" 
    onApply: console.log(val) 
    onReset: { 
     // RESET COMBOBOX TO DEFAULT 
    } 
    TabView { 
     id: tabView 
     anchors.fill: parent 
     Tab { 
      title: "ValueTab" 
      id: tabVal 
      GridLayout { 
       id: gridVal 
       anchors.fill: parent 
       GroupBox { 
        title: qsTr("Choose value") 
        id: gb 
        Layout.fillWidth: true 
        ColumnLayout { 
         anchors.fill: parent 
         id: cl 
         ComboBox { 
          id: valueChooser 
          editable: false 
          model: ListModel { 
           id: listModel 
           ListElement { text: "One" } 
           ListElement { text: "Two" } 
           ListElement { text: "Three" } 
          } 
          Layout.fillWidth: true 
          onCurrentTextChanged : val = currentText 
         } 
        } 
       } 
      } 
     } 
    } 
} 
+0

내에서 Dialogreset()에 연결 Connections 타입을 사용
? – derM

답변

0

나는 당신이 말할 권리로 질문을 가지고 있다면, 당신은 Combobox 내에서 Dialog을 참조 할 수 없습니다, 아주 확실입니다. 나는 이유를 알 수 없다.

당신의 예제에 실제로 문제가 있다고 가정하고 리셋 버튼을 누르기 만하면 원하는 값으로 재설정 할 수 있습니다. 원래의 값을 알고 싶으면이 방법으로 해결할 수 있습니다. 은`Combobox`이 외부 대화 상자를 참조 할 수 없습니다 왜 Combobox

import QtQuick 2.3 
import QtQuick.Controls 1.4 
import QtQuick.Dialogs 1.2 
import QtQuick.Layouts 1.1 

Dialog { 
    id: dlg 
    title: "Settings" 
    visible: true 
    standardButtons: StandardButton.Apply | StandardButton.Reset 
    property string val: "" 
    onApply: console.log(val) 
    onReset: { 
     // **DONT** RESET COMBOBOX TO DEFAULT **HERE** 
    } 
    TabView { 
     id: tabView 
     anchors.fill: parent 
     Tab { 
      title: "ValueTab" 
      id: tabVal 
      GridLayout { 
       id: gridVal 
       anchors.fill: parent 
       GroupBox { 
        title: qsTr("Choose value") 
        id: gb 
        Layout.fillWidth: true 
        ColumnLayout { 
         anchors.fill: parent 
         id: cl 
         ComboBox { 
          id: valueChooser 
          editable: false 
          model: ListModel { 
           id: listModel 
           ListElement { text: "One" } 
           ListElement { text: "Two" } 
           ListElement { text: "Three" } 
          } 
          Layout.fillWidth: true 
          onCurrentTextChanged : val = currentText 

          /// *** INTERESTING PART HERE! *** 
          Connections { 
           target: dlg 
           onReset: { 
            // RESET COMBOBOX TO DEFAULT **HERE** INSTEAD 
            valueChooser.currentIndex = 0 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 
+0

굉장 :)이 작품, 고마워요! –