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

{
id: _manager
repository: _repo

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

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

29 ответов

28 просмотров
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
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
2
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта