Сборщик мусора и Connections в qml
подключил в qml c++ класс
main.cpp
int main(int argc, char *argv[]) { QList<QPair<QString,qreal>> ArrowList; QList<QString> IndicatorList; fillDataToPanel(ArrowList,IndicatorList); PanelModel panel; panel.setFillData(ArrowList,IndicatorList); QGuiApplication app(argc, argv); QQmlApplicationEngine engine; QQmlContext *context = engine.rootContext(); engine.setObjectOwnership(&panel,engine.JavaScriptOwnership); context->setContextProperty("panel",&panel); qmlRegisterType<Arrow>(); engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); return app.exec(); }
часть qml
main.qml
import QtQuick 2.3 import QtQuick.Window 2.2 Window { visible: true width: 1280 height: 720 opacity: 1 color: "black" flags: Qt.FramelessWindowHint Connections{ target: panel onContainerChanged:{ image2.rotation=arg.getArrowMapDisplayValue("MainArrow").value } } MouseArea{ anchors.rightMargin: 468 anchors.bottomMargin: 163 anchors.leftMargin: 476 anchors.topMargin: 243 anchors.fill: parent onClicked:{ panel.moveMainArrow() gc() } } Item { id: background x: -692 y: -217 width: 1280 height: 720 opacity: 1 anchors.centerIn: parent Image { id: image1 x: 0 y: 0 width: parent.width height: parent.height opacity: 1 fillMode: Image.Stretch source: "../kr.png" } Image { id: image2 x: 320 y: 80 width: 639 height: 639 source: "../row.png" }после первого клика запускается таймер который соединяет сигнал с++ со слотом qml. После второго клика сборщик мусора удаляет элемент Connections и появляется ошибка
TypeError: Cannot read property 'value' of null.
Версия qt 5.5
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 9:50
EVA25 декабря 2023 г. 18:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
Как получить в массив значения из связанной модели? Спасибо, разобрался:))
AC
QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…
Alexandru Codreanu19 января 2024 г. 19:57
BlinCT27 декабря 2023 г. 16:57
Дмитрий10 января 2024 г. 12:18
Evgenii Legotckoi12 декабря 2023 г. 14:48
Думаю, что по какой-то причине сборщик мусора считает, что panel нигде не используется, хотя видимых причин в коде нет, кроме разве что того, что вы использовали установку владения объектом panel на QML часть
можешь попробовать в деструкторе модели вызвать
и в дебагере посмотреть stacktrace