Вопрос по QML: Есть такой QML код: Repository { id: _repo } Manager

{
id: _manager
repository: _repo

Component.onCompleted: loadMyData();
}
Repository и Manager это мои С++ классы, loadMyData - метод менеджера.

Внутри loadMyData у меня идёт обращение к repository (вызов вирт. метода), который не срабатывает, т.к. в qt_metacast передаётся мусор вместо имени класса.
Как можно это пофиксить?

29 ответов

8 просмотров
Kirill-Bolshakov Автор вопроса

При этом в отладчике смотрю указатель repository_ установился в правильный тип, но при вызове вирт. метода repository->foo() при заходе внутри почему то вызывается qt_metacast, которому передаётся мусор в параметр вместо строки. Это в дальнейшем приводит к падению. Короче, не понятно почему не работает

Manager собрался раньше репы, в чем вопрос то?

Kirill Bolshakov
Как пофиксить?

самый лучший вариант - loadMyData() вызывать у менеджера в setRepository

Kirill Bolshakov
Как пофиксить?

OnCompleted parent-a использовать

Kirill-Bolshakov Автор вопроса
Макс Воробьев
Manager собрался раньше репы, в чем вопрос то?

А можете пояснить откуда там qt_metacast(const char*) вызывается, когда я нажимаю Step Into в отладчике на строчке: repository->virt_method();?

Kirill Bolshakov
А можете пояснить откуда там qt_metacast(const cha...

где-нибудь в static meta object или нагенереном moc ?

Anatoly Shirokov
Не вариант, имхо

а почему нет? ну кроме того, что сеттер делает то, что от него не ожидаешь

Kirill Bolshakov
screenshot

читай про moc и что он генерит

Kirill-Bolshakov Автор вопроса
Макс Воробьев
читай про moc и что он генерит

Мне бы понять как эта штука вызвалась при вызове вирт. метода

а проблема не может быть в самом айдишнике? Если убрать _ не сработает? Вроде внутри кумля нотацию с _ и используют, авось конфликт какой

Anatoly Shirokov
Single responsibility

по моему пол qml так работает

Kirill-Bolshakov Автор вопроса
Макс Воробьев
она вызвалась при вызове из qml

Может конечно отладчик фигню показывает, но я попадаю в этот метод при Step Into уже в loadData() в С++ коде

Макс Воробьев
по моему пол qml так работает

У сеттера есть emit сигнала, в обработчике делай что хочешь

Kirill-Bolshakov Автор вопроса
Макс Воробьев
она вызвалась при вызове из qml

И по Call Stack вижу родительский фрейм - loadData в С++ коде

Kirill-Bolshakov Автор вопроса
Anatoly Shirokov
OnCompleted parent-a использовать

Это не сработало, мб проблема в другом

Anatoly Shirokov
У сеттера есть emit сигнала, в обработчике делай ч...

все-равно осадок остался. есть объект. задача объекта - выгрузить данные из другого объекта. так почему-бы не выгрузить данные сразу в setter ? да, Single responsibility, но если объект специально для этого сделан

Макс Воробьев
все-равно осадок остался. есть объект. задача объ...

не надо нагружать сеттеры левой деятельностью, для этого есть сигналы

Anatoly Shirokov
не надо нагружать сеттеры левой деятельностью, для...

так а смысл нагружать вызов сигналом ради вызова метода у самого себя?

Anatoly Shirokov
короче, Макс, не делай вид, что ты меня не понял

нет. этот тот момент, который я действительно не понимаю

Макс Воробьев
нет. этот тот момент, который я действительно не п...

сеттер генеренный метод считай, наделять его дополнительной функциональностью нерационально. он умеет устанавливать новое значение свойства и оповещать об этом - в этом его назначение и единственная обязанность

Похожие вопросы

Обсуждают сегодня

Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Ребят, а больше никто поработать не хочет? Кто свободен?
AIZ
4
Всем привет. Есть кто разбирается в платежках? Что б принимать из других стран и выплачивать рф снг
Musa
6
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Карта сайта