나는 두 클래스, 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)
그리고 물론 적절한 게터와 세터를 만들었습니다. 이 클래스는 잘 작동합니다.
내 두 번째 클래스에서 TestB
은 TestA
인 Q_PROPERTY
을 만들고 싶습니다. 따라서 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
@leemes 제안으로 컴파일 오류가 사라졌습니다. 나는 그것을 시도했다는 것을 맹세 할 수 있었다. :} –