2015-01-21 4 views
1

없이 connect() 및 tr() 사용 QObject::없이 사람들이 connect()을 자주 사용하는 것을 볼 수 있습니다.
어떻게 할 수 있습니까? QObject를 클래스가 아닌 공간이기 때문에,
'connect' was not declared in this scopeQObject ::

내가 using namespace QObject을 사용할 수 없습니다 : 난 그냥 connect()을 쓸 때 나는 오류가 발생합니다.

답변

3

QObject에서 상속하는 클래스의 멤버 함수를 사용하는 경우이 작업을 수행 할 수 있습니다. QObject에서 상속하는 객체의 범위에 있지 않을 경우 객체 인스턴스을 사용하고 범위를 지정하지 않아야합니다. 그래서 예를 들어

:

class MyClass : public QObject 
{ 
    ... 
    void myMemberFunction() 
    { 
     ... 
     connect(...); // Implicitly uses this->connect(...) 
     ... 
    } 
    ... 
}; 

void myNonmemberFunction(MyClass& instanceOfMyClass) 
{ 
    ... 
    instanceOfMyClass.connect(...) 
    ... 
} 
+0

그래서, 주요()가 가능하지? 'auto * connect = & QObject :: connect;'와 같은 것을 할 수 있습니까? – Efog

+0

QObject에서 파생 된 유형의 멤버 함수가 아니기 때문에'main'에 QObject :: connect를 사용해야합니다. – nib

+0

@Efog 아,'static' * 함수를 원하십니까? 그렇다면 실제로 올바른 포인터를 얻을지 확실하지 않습니다. 그러나 * 왜 * 당신은 함수 포인터를 얻고 싶습니까? –