2013-12-18 67 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 
    } 
} 

有關爲什麼SLOT未被調用的任何建議?

+1

您是否在與此相關的應用程序輸出中遇到錯誤? _MyClass_是否包含Q_OBJECT宏? – Zlatomir

+4

此外,QObject :: connect返回布爾值 - 它值得檢查它是否返回true –

+0

我們需要至少看到MyClass的信號和插槽定義,以及實際的連接調用。你可能在那裏有一個不匹配的地方(因此以前的評論檢查連接的返回值)。 –

回答