У меня есть следующий класс, расположенный в ContextProperty
в начале применения:доступ QObject унаследовал класс от другого класса QObject
class MyClass : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE MyClassModel getModel() const { return m_myClassModel; }
private:
MyClassModel m_myClassModel;
}
В одном из своих методов, MyClass
заполняет m_myClassModel
с данными (Выходец из сервер).
MyClassModel
также наследует QObject
(из-за Q_PROPERTY
макросы):
class MyClassModel : public QObject
{
Q_OBJECT
// Lots of Q_PROPERTY macros
Q_PROPERTY(int stuff READ stuff WRITE setStuff NOTIFY stuffChanged)
public:
...
signals:
void stuffChanged();
...
}
Затем в файле QML, MyClassModel
используется для запуска сигналов и обновлять графические элементы:
Item
{
anchors.fill: parent
CustomLabel
{
Connections
{
target: myClass.myClassModel()
onStuffChanged: { console.log("signal triggered!") }
}
}
}
Из-за Q_INVOKABLE MyClassModel getModel() const { return m_myClassModel; }
, Я получаю эту ошибку:
error: C2248: 'QObject::QObject' : cannot access private member declared in class 'QObject'
Я думаю, что я понимаю причину этой ошибки, но я не уверен, что я должен сделать, чтобы предотвратить ее. Мне нужно иметь доступ к MyClassModel
от MyClass
, чтобы заполнить его данными, но я не могу вернуть его в свой файл QML
.
Отлично объяснение, спасибо! –