2013-03-16 2 views
1

Qt는 펑터 파라미터 as shown here을 사용하여 신호 슬롯 연결에서 람다 함수를 사용할 수 있습니다. 하지만 Qt에서 functor 매개 변수를 선언하는 방법은 무엇입니까? 예를 들어,Qt에서 펑터 매개 변수를 선언하는 방법은 무엇입니까?

QAction* CreateAction(QString text, QObject* parent, Functor functor) 
{ 
    QAction* action = new QAction(icon, text, parent); 
    QObject::connect(action, &QAction::triggered, functor); 
    return action; 
} 

질문 컴파일러가 "은 Functor"유형을 알려 파일을 포함하는 방법이다.

+0

을 선언 : 여기

이 문서에서 예제입니다? –

+0

Qt는 Functor 형식을 문서에서 보여 주듯이 선언했습니다. 그러나 그것이 선언 된 곳을 찾을 수는 없습니다. – user1899020

답변

1

Functor은 실제 유형이 아닙니다. Qt 문서의 자리 표시 자입니다. 실제 유형은 템플리트 유형 매개 변수입니다. 관심이 있으시면 QObject.h을 확인하십시오. 실제로는 <functional>으로 정의 된 std::function을 사용할 수 있습니다.

+0

샘플 코드 스 니펫으로 구성된 경우이 답변이 더 도움이된다고 생각합니다. –

-1

http://qt-project.org/doc/qt-5.0/qtcore/qobject.html#connect-5

은 펑 그냥 void * 또는 무효 포인터입니다. 정적 일 필요가 있습니다. 이것은 일반적인 콜백 함수와 비슷합니다. 당신의`Functor` 유형이

void someFunction(); 
QPushButton *button = new QPushButton; 
QObject::connect(button, &QPushButton::clicked, someFunction); 
+2

무효가 아닙니다 *. 헤더를 읽으십시오. http://qt.gitorious.org/qt/qtbase/blobs/stable/src/corelib/kernel/qobject.h#line243 –

관련 문제