2017-12-19 16 views
-3

Ich versuche, Text aus dem aktuellen Index von ComboBox zu bekommen. model.get(scale).text Methode funktioniert nicht, es erhält nur den ersten Index.Qt Quick: Wie bekomme ich den aktuellen Text von ComboBox

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.3 
import QtQuick.Controls.Material 2.0 
ApplicationWindow { 
    visible: true 
    width: 200 
    height: 200 
    title: qsTr("Hello World") 
Column{ 
    anchors.horizontalCenter: parent.horizontalCenter 
    id:optionsColumn 
    spacing: 5 
    anchors.fill : parent 
    anchors.topMargin : 15 
    anchors.bottomMargin : 15 
    anchors.leftMargin :15 
    anchors.rightMargin : 15 
    ComboBox { 
     id: scale 
     anchors.horizontalCenter: parent.horizontalCenter 
     editable: true 
     inputMethodHints: Qt.ImhDigitsOnly 
     currentIndex: 1 
     model: ListModel { 
      id: model 
      ListElement { text: "500" } 
      ListElement { text: "1000" } 
      ListElement { text: "2000" } 
      ListElement { text: "5000" } 
      ListElement { text: "10000" } 
      ListElement { text: "25000" } 
     } 
     onAccepted: { 
      id:maccepted 
      if (find(editText) === -1) 
       model.append({text: editText}) 
     } 
    } 
    Button{ 
     id:showtext 
     text: "Scale to text" 
     anchors.horizontalCenter: parent.horizontalCenter 
     onClicked: { 
      var a=parseFloat(model.get(scale).text) 
      scaletext.text=a 
     } 
    } 
    TextField{ 
     id:scaletext 
     anchors.horizontalCenter: parent.horizontalCenter 
     readOnly: true 
    } 
} 
} 
+0

Sie sollten Ihr Beispiel richtig machen. 'ComboBox.accepted' wurde in' QtQuick.Controls 2.2' eingeführt und ist im importierten '2.0' nicht verfügbar. – derM

+0

Was genau erwartest du mit' model.get (scale) .text'? 'model.get()' erwartet einen 'int'-Index, übergeben Sie ein' Q (t) -Objekt'. – derM

+0

Ich erwartete, dass es den aktuellen Text aus der Combobox bekommt. Ich habe es aus Qt-Dokumenten referenziert. Jetzt funktioniert scale.currentText wie erwartet. –

Antwort

1

Viel Spaß.

onClicked: { 
    //var a=parseFloat(model.get(scale).text) 
    scaletext.text = scale.currentText; 
} 
+0

Vielen Dank :) –

Verwandte Themen