2016-06-06 18 views
0

Ich verwende eine QT 4.8 Anwendung. Ich möchte in der Lage sein, eine Map in qml zu übergeben, um die Sichtbarkeit einiger Textelemente zu bestimmen.C++ Karte in qml übergeben, um die Sichtbarkeit von Elementen zu bestimmen

QQPropertyMap ermöglicht dies, aber ich kann nicht mit 4.8 verwenden. Kann ich etwas Ähnliches machen? Hier

ist eine Art, was ich werde für:

C++

map <String, bool> // some type of map to determine visibility 
map.insert("key1", true); // insert key/pair values 
map.insert("key2", false); 

QML

Text { 
    text: "key1" 
    visible: map.key1 
} 
Text { 
    text: "key2" 
    visible: map.key2 
} 

Auch, wenn ein Kartenwert geändert wird, würde ich die Sichtbarkeit ändern möchten in qml. Ex. map.insert ("key1" false), jetzt wäre "key1" nicht sichtbar.

Gibt es irgendetwas in QT 4.8 ähnlich? Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Sie können QDeclarativePropertyMap von QtDeclarative Modul verwenden. Mit der Klasse QDeclarativePropertyMap können Schlüssel/Wert-Paare festgelegt werden, die in QML-Bindungen verwendet werden können.

QtDeclarative Modul wurde deprecated in Qt 5. Alle Klassen, die zuvor in der QtDeclarative Modul waren, sind in die Qt QML und Qt Schnell Module verschoben worden, und ihre Klassennamen geändert wurden, um ihre neuen Modulpositionen zu reflektieren.

QDeclarativePropertyMap -> QQmlPropertyMap

+0

Danke. Gibt es eine Möglichkeit, über einen öffentlichen Getter auf die Karte zuzugreifen, anstatt die Eigenschaft context festzulegen? – user3781214

+0

Zumindest könnten Sie Ihre Map in ein QObject verpacken und jedes Feld der Map als eine Eigenschaft dieses Objekts verfügbar machen. – talamaki