Соединиться со всеми объектами QML, созданными с помощью одного вызова Qt.createComponent

Вопрос

Как создать компонент QML таким образом, чтобы все объекты, созданные компонентом, были связаны одинаково?

Например, я хотел бы triggered сигнал всех объектов, созданных thirdPartyAPI быть подключенным к onTriggered слот:

function onTriggered() { }
thirdPartyAPI.factory = Qt.createComponent("Trigger.qml")

Зачем?

Я знаю, что могу создать компонент, затем создать объекты по компоненту, а затем параметризовать (подключить и установить свойства) каждый из созданных объектов.

Я использую сторонний API, который берет компонент и создает объекты внутри. У меня есть контроль над созданием компонента, но у меня нет доступа к Component.createObject звонки (это внутри API).

Я хотел бы получить эффект, похожий на этот: (Я знаю, что нет newObjectCreated сигнал на компонент)

var factory = Qt.createComponent(...)
factory.onNewObjectCreated: {
  newInstance.triggered.connect(onTriggered)
}

1 ответ

Вы можете просто обернуть процедуру создания объекта в какую-нибудь общую функцию, например:

function createMyObject(component, parent, params)
{
    var compo = Qt.createComponent(component);
    var obj = compo.createObject(parent, params);
    obj.customSignal.connect(onInstanceTriggered);
}
Другие вопросы по тегам