Проблема связующего цикла в приложении с QML & C ++ - PullRequest
0 голосов
/ 01 мая 2019

Я делаю проект, в основном я хочу синхронизировать свойство theProperty между 2 блоками в 2 файлах QML (у 2 блоков есть это свойство), я связываю theProperty с C ++ Q_PROPERTY, поэтому связывая 2 блока с одним и тем же C ++ Q_PROPERTY, можно добиться синхронизации. Вот мои коды в ячейках A и B. theProperty могут быть независимо изменены в ячейках A и B

Box_A {
    id: box_A
    // sth
    Binding { target:box_A; property: "theProperty"; value:model.CppModel.theProperty } 
    onThePropertyChanged: {
        model.CppModel.theProperty = theProperty
    }
}
Box_B {
    id: box_B
    // sth
    Binding { target:box_B; property: "theProperty"; value:model.CppModel.theProperty } 
    onThePropertyChanged: {
        model.CppModel.theProperty = theProperty
    }
}

В кпп:

    Class Item: QObject{
        Q_OBJECT
        Q_PROPERTY(bool theProperty READ theProperty WRITE theProperty NOTIFY theProperty Changed)
  //sth
        }

Внутри Box_A и B есть область мыши, с помощью которой можно изменить theProperty:

MouseArea{

  onClicked: theProperty=!theProperty
}

Проблема в том, что после того, как я изменил theProperty в любом из полей A или B, создатель qt жалуется на обнаружение привязки цикла для значения: model.CppModel.theProperty на другой стороне, есть ли способ обойти эту проблему?

1 Ответ

0 голосов
/ 01 мая 2019

Почему бы вам просто не сделать:

Box_A {
    id: box_A
    // sth
    theProperty:model.CppModel.theProperty  
}

Разве это не сработало для вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...