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

{
id: _manager
repository: _repo

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

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

29 ответов

32 просмотра
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
короче, Макс, не делай вид, что ты меня не понял

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

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

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

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта