1
我有兩個類,TestA
和TestB
。 TestA
延伸QObject
。我建立了幾個Q_PROPERTY
就是這樣。使用自定義類作爲Q_PROPERTY
Q_PROPERTY(QString a_string READ getString WRITE setString)
Q_PROPERTY(int a_int READ getInt WRITE setInt)
而且,當然,我創建了適當的getter和setter。這個課程工作得很好。
在我的第二課,TestB
,我想創建一個Q_PROPERTY
這是一個TestA
,所以我在testb.h
這樣做。
Q_PROPERTY(TestA testa READ getTestA)
public:
TestA *getTestA();
private:
TestA mTestA;
而這在testb.cpp
。
TestA *TestB::getTestA() {return &mTestA;}
當我嘗試編譯這個,我得到以下錯誤信息。
moc_testb.cpp: In member function 'virtual int TestB::qt_metacall(QMetaObject::Call, int, void**)':
moc_testb.cpp:75: error: no match for 'operator=' in '*(TestA*)_v = TestB::getTestA()'
../qttest/testa.h:7: note: candidates are: TestA& TestA::operator=(const TestA&)
有人能告訴我我需要做什麼來解決這個問題嗎?
你可以添加到你的答案是,如果一個人想返回類型爲TestA,還可以將屬性的類型更改爲指針類型:'Q_PROPERTY(TestA * testa READ getTestA)' – leemes
使用@lemes建議,我的編譯錯誤消失了。我可以發誓我已經試過了。 :} –