[Qt-qml] Javascript constants not allowed in models

Leonty kavaj at mail.ru
Mon Jan 10 21:09:18 CET 2011


Thanks a lot! I'm going to try it.

Gregory Schlomoff пишет:
> Hmmm, that makes some sense. I presume the ListElement needs data that
> is really constant, and Qt.* constants seem to be "script properties",
> which may not be constant from the point of view of the qml engine.
> 
> Maybe you could resort to some kind of hack, like putting a table of
> your Key constants in a javascript array or object. Granted, with this
> hack, you would actually be constructing a parallel JS model to the
> QML model.
> 
> Something along the lines of:
> ==============
> Rectangle {
> 	width: 360
> 	height: 360
> 
> 	function keys(c) {
> 		var table = {key7: Qt.Key_7}
> 		return table[c];
> 	}
> 
> 	Repeater {
> 	 model: ListModel {
> 		 ListElement { label: "7"; value: "7"; key: "key7" }
> 	 }
> 	 delegate: Text {
> 		 text: model.label + " : " + keys(model.key)
> 	 }
> 	}
> }
> ============
> 
> Could probably be improved for better semantics. You could use a JS
> array instead of an object. But there may be some nice stuff to get
> from the object, like the ability to access the data with dot notation
> (ie: table.key7)
> 
> On Tue, Jan 4, 2011 at 7:43 PM, Alexey <kavaj at mail.ru> wrote:
>> I tried to create a numeric keyboard and stuck at the following: I want to let every
>> button handle its own key, so I pass this key through the model:
>>
>> Repeater {
>>  model: ListModel {
>>    id: model
>>    ListElement { label: "7"; value: "7"; key: Qt.Key_7 }
>>    ...
>>
>> In the button component (delegate) I use this:
>>
>> Keys.onPressed: {
>>  if (event.key == model.key) {
>>    event.accepted = true;
>>    clicked(model.value);
>>    ...
>>
>> But the point is that it doesn't let me use Qt.Key* constants:
>> file:///D:/Projects/qmlinterface/Controls/Numpad.qml:25:43: ListElement: cannot use script
>> for property value
>> ListElement { label: "7"; value: "7"; key: Qt.Key_7 }
>>                                      ^
>>
>> I could hardcode key codes as integers, but it's not really portable... What would you
>> suggest, guys?
>> _______________________________________________
>> Qt-qml mailing list
>> Qt-qml at qt.nokia.com
>> http://lists.qt.nokia.com/mailman/listinfo/qt-qml
>>


More information about the Qt-qml mailing list