QML Binding loop detected for property
Добрый день! Во вложении пример (Qt 5.7.0) , в котором при нажатии на кнопку подгружается Pane в StackView. Проблема в том, что в отладочном окне выводится сообщение: Binding loop detected for property “contentHeight”. Это сообщение появляется при добавлении второго Label в Pane со свойством Text.WordWrap. При добавлении еще Label – сообщения растут как на дрожжах. Как это вылечить?
test_1.zip0
99
Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
- Соңғы пікірлер
- AKСәуір 1, 2025, 11:41 Т.Ж.Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VPНаурыз 9, 2025, 4:14 Т.Қ.Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- Енді форумда талқылаңыз
- DTСәуір 14, 2025, 3:38 Т.Қ.Всем привет! На Qt 6.8 MinGW пытаюсь сделать управление подключением WiFi из программы. Пока делаю поддержку Windows, но так же хочу в дальнейшем внедрить и поддержку Linux/MacOS. Для…
- fАқп. 15, 2025, 1:46 Т.Қ.Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Добрый день.
Петля из-за того, что VerifyWarningPage объявлено в качестве property, эта штука находится вне StackView, а когда помещаете его в StackView, то начинает сходить с ума.
сделайте вот так
1. Переименовать сигнал в VerifyWarningPage . Вы назвали его как обработчик.
То есть, допустим сигнал называется anySignal(), а обработчик уже будет называться как onAnySignal(). В вашем же случае придётся тогда обработчик определять как onOnWarning:
Следовательно называем следующим образом:
Подробнее про сигналы и слоты в QML можно прочесть здесь Сигналы и слоты в QML
2. Прикрутить Connections на текущий item в stackView:
Конечно, может быть такая ситуация, что разные сигналы используются для разных item`ов в stackView. Но я не заметил утечек памяти, даже если и ругается ошибками приложение, тем не менее сигналы и слоты нормально подключаются и всё работает. А вообще в таком случае я стараюсь перепроектировать логику работы приложения, чтобы было как можно меньше таких некрасивых мест, но это уже вопрос местечковый.
Я Вам ответил на поставленный вопрос. А некий сигнал currentIndexChanged, который Вы придумали в своём последнем сообщении вообще нигде до этого не фигурировал. То есть я про него не знал.
Поэтому исходя из этого:
Определитесь сначала, что именно пытаетесь сделать, и после этого только сформулируйте проблему. И желательно подробно её формулируйте, поскольку я не могу допридумывать за Вас, как будет работать Ваше приложение и какие могут быть у него проблемы.
А вообще, включайте воображение при решении задачи. Сигнал может передавать уникальный идентификатор конкретного Item, по которому через switch case конструкцию будет определяться логика обработки для конкретного item в stackview.
var verifyTuPage = stackView.push(“qrc:/VerifyTuPage.qml”)
и так далее.verifyTuPage.currentIndexChanged.connect(verifyTuPage_onCurrentIndexChanged)
И решение интересное подобрали в итоге.