Russian Qt Forum

Qt => Qt Quick => Тема начата: RoulanD от Май 13, 2013, 16:16



Название: Получение ссылки на элемент в qml
Отправлено: RoulanD от Май 13, 2013, 16:16
Доброго времени суток.

Ситуация следующая:

Есть некий список элементов (Rectangle). Каждый элемент - это представление одной записи из некой базы данных. Сверху в меню есть кнопка "Редактировать", которая редактирует выделенный элемент (элементы выделяются кликом по соответствующему Rectangle). Эти Rectangl'ы естественно создаются динамически при загрузке базы данных, и при добавлении нового элемента.

Как отредактировать этот выделенный Rectangle.

Я могу создать глобальную переменную в которую могу закидывать id или objectName выделенного элемента, но как мне эту информацию преобразовать в указатель на этот самый Rectangle в функции js и изменять его так как мне угодно.

Немного запутанно. Если есть вопросы или есть идеи как организовать изменение Rectangl'a без получение ссылки на него то отписывайте.

В общем прощу помощи.


И да, мне тут стукнуло в голову что организовывать работу с базой данных через js - это вроде не самая лучшая затея. Если у кого то есть идеи как это реализовать по другому (возможно средствами Qt), буду рад услышать (увидеть).


Название: Re: Получение ссылки на элемент в qml
Отправлено: BuRn от Май 13, 2013, 16:56
А если попробовать уничтожать тот ректангл и после сохранения перерисовывать его заново ? И да, зачем вам ректанглы для записей из бд? список для вашего случая не подходит ? а делегат уже сделать ректанглами. В таком случае проблема с редактированием не должно быть ибо навесив модель из сишника, при редактировании записи обновлять проблем не будет


Название: Re: Получение ссылки на элемент в qml
Отправлено: ctin от Май 13, 2013, 20:42
В чем проблема вставить TextInput и генерировать сигнал с новыми данными?
вот как я сделал для отправки значения делегата в прибор
Код:
....
id: textInput
        onActiveFocusChanged: {
            if(!activeFocus)
                newValueRequest(text)
        }
        Keys.onEnterPressed: newValueRequest(text)
        Keys.onReturnPressed: newValueRequest(text)
....
onNewValueRequest: device.setModelData(slot, index, text, "userValue")


Название: Re: Получение ссылки на элемент в qml
Отправлено: lighting от Май 14, 2013, 12:21
Вообще у вас мне кажется подход менять надо, но если хочется сделать именно так то можно создавать эти rectangle в js скрипте и при создании сохранять ссылки на них в массиве. В качестве примера можно посмотреть same game из примеров qt.


Название: Re: Получение ссылки на элемент в qml
Отправлено: ctin от Май 14, 2013, 13:04
Правильный подход - это работать через модель данных. В C++ создается QAbstractListModel, которая засовывается в QML и у элемента вызывается Role.