Как правильно сделать такую структуру? class QmlGuiElement { Q_PROPERTY(IDataProvider dataProvider);

// Хочу устанавливать dataProvider из QML
};

class IDataProvider : public QObject { // Наследую от QObject, чтобы юзать в Q_PROPERTY
virtual void loadData(...) = 0;
}

class DataProvider : public QObject, public IDataProvider { // Наследую QObject чтоб инстанцировать в QML
void loadData(...) override;
}
qmlRegisterType<DataProvider>(...);
И потом в qml коде писать:
QmlGuiElement {
dataProvider: DataProvider {}
}

При таком коде пишет, что множественное наследование от QObject не поддерживается. Как правильно должен код выглядеть?

5 ответов

8 просмотров

class DataProvider : public IDataProvider

Я не уверен опечатка ли это, но QmlGuiElement должен от куобджекта наследоваться для Q_PROPERTY

Указатель используй в свойстве

у DataProvider должна быть единственная база QObject

возможно есть смысл поискать про Q_INTERFACES

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

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

Портфолио: Зовут меня Александр, мне 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
всем привет. я правильно понимаю, что в телеграфе 4, если сессию указать у сообщения с коллбеком (кликнул на кнопку и установил сессию), то она не сохраняется?
Тимур
1
Карта сайта