Название: соединение сигнала объекта QML с обработчиком (функцией ) в JS Отправлено: kvrus от Февраль 17, 2012, 14:37 Задача такая.
Есть файл LineParamEdit.qml - это объект QML. У этого объекта есть сигнал signal setParam(string name,string value, string unit); есть файл main.qml - это основной qml документ в котором хочется отобразить несколько LineParamEdit. Для их отображения создан файл my.js: var component = Qt.createComponent("LineParamEdit.qml"); // определили компонент над которым происходит обработка var linesArray = new Array(); var coordinates = [ [10,10], [10,60], [10,110] ] var lines = [ ["Fs","100","MHz","Sampled Frequency"], ["SYM","800","sml","Samples per symbol"], ["Flo","10","MHz","LO frequency"] ] function createNewBlock(){ for (var i = 0; i < 3; i++) { if(component.status != Component.Ready){ return false; } // создание объекта var newLine = component.createObject(convas); if(newLine == null){ return false; } newLine.parameterNameText = lines
newLine.parameterUnitText = lines[2]; newLine.parameterDescriptionText = lines[3]; newLine.setParam.connect(setParamStruct(newLine.parameterNameText,newLine.parameterUnitText,newLine.parameterUnitText)); newLine.x = coordinates
linesArray.push(newLine); // заносим объект в массив ообъектов } return true; } function setParamStruct(name,value,unit){ console.log(name); console.log(value); console.log(unit); } в main.qml скрипт импортирован и по окончанию создания qml вызывается функция динамического создания LineParamEdit Component.onCompleted: Main.createNewBlock(); Объекты создаются как нужно, но никак не удается привязать сигналы объектов к функции обработчику setParamStruct и строчка newLine.setParam.connect(setParamStruct(newLine.parameterNameText,newLine.parameterUnitText,newLine.parameterUnitText)); не работает. Есть у кого нибудь идеи? Название: Re: соединение сигнала объекта QML с обработчиком (функцией ) в JS Отправлено: mutineer от Февраль 17, 2012, 14:41 попробуй тут почитать
http://developer.qt.nokia.com/doc/qt-4.8/qml-connections.html Название: Re: соединение сигнала объекта QML с обработчиком (функцией ) в JS Отправлено: kvrus от Февраль 17, 2012, 14:50 Я бы мог так же динамически создавать и объекты коннектеров:
Connections { target: area onClicked: foo(parameters) } но они полем target: привязываются к ID, а при динамическом создании LineParamEdit я им не могу ID назначить. Что то ничего не понимаю как это работает. Есть хороший пример на динамическое формирование объектов? Название: Re: соединение сигнала объекта QML с обработчиком (функцией ) в JS Отправлено: Vass от Февраль 17, 2012, 16:35 попробуйте newLine.setParam.connect(setParamStruct);
Параметры там ни к чему. Название: Re: соединение сигнала объекта QML с обработчиком (функцией ) в JS Отправлено: kvrus от Февраль 24, 2012, 12:24 Вот что смог получить по теме "обработка сигналов динамических объектов"
Есть по вот этой ссылке: http://doc.qt.nokia.com/4.7-snapshot/qdeclarativedynamicobjects.html Вот такая строчка: "To connect signals to (or receive signals from) dynamically created objects, use the signal connect() method. See Connecting Signals to Methods and Signals for more information." Которая воодушевляет на связку посредством connect свойства, но вот ничего из этого не получается. если написать connect в QML, то все свяжется, но если из JS то не свяжется. Поэтому есть вот такое очень специфическое решение использовать var newObject = Qt.createQmlObject('import QtQuick 1.0; Rectangle {color: "red"; width: 20; height: 20}', parentItem, "dynamicSnippet1"); если в строковую переменную с текстом QML вписать обработчик сигнала, то он сработает. |