【发布时间】:2016-02-17 16:34:28
【问题描述】:
我有以下课程,在应用程序开头设置为ContextProperty:
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'
我想我理解这个错误的原因,但我不确定我应该做些什么来防止它。我需要从MyClass 访问MyClassModel 才能用数据填充它,但我无法将其返回到我的QML 文件中。
【问题讨论】: