2013-12-18 2 views
3

내가 같은 일을하고 방출 될 때 호출되지 않습니다Qt는이 : 신호 처리기는 신호가

MyClass::MyClass(QWidget *parent) : QLabel(parent) 
{ 
    this->MyMenu = new QMenu(); 

    QAction* act_del = new QAction(MyMenu); 
    act_delete->setText("MyAction"); 

    MyMenu->addAction(act_del); 

    QObject::connect(act_del,SIGNAL(triggered()),this,SLOT(MySlot())); 
} 

void MyClass::MySlot() 
{ 
    //Not called 
} 

신호가 SLOT 트리거 될 때에 어떤 제안이 호출되지 않습니다. 여기에 메뉴가 표시됩니다된다 :

void MyClass::contextMenuEvent(QContextMenuEvent *ev) 
{ 
    QPoint globalPos = this->mapToGlobal(ev->pos()); 

    QAction* selectedItem = MyMenu->exec(globalPos); 
    if (selectedItem) 
    { 

    } 
    else 
    { 
     // nothing was chosen 
    } 
} 

슬롯가 호출되지 않는 이유에 대한 어떤 제안?

+1

관련 애플리케이션 출력에 오류가 있습니까? _MyClass_에 Q_OBJECT 매크로가 있습니까? – Zlatomir

+4

또한 QObject :: connect는 부울 값을 반환합니다. true를 반환하는지 확인해야합니다. –

+0

적어도 실제 연결 호출은 물론 MyClass의 신호 및 슬롯 정의를 확인해야합니다. 어딘가에 잘못 찾았을 것입니다 (따라서 연결의 반환 값을 확인하는 이전의 주석). –

답변

5

MyClass에는 신호 슬롯 연결을위한 Q_OBJECT 매크로가 있어야합니다.