如果被触发,为什么不能连接 Action 来调用函数?
我以为我已经理解了source的语法
指出可以直接调用函数。

void Traymenu::createMainContextMenu(){
    QAction *actionNewNote = mainContextMenu.addAction("Test Func");

    QObject::connect(actionNewNote,QAction::triggered,Traymenu::testFunc);

    mainIcon.setContextMenu(&mainContextMenu);

}

void Traymenu::testFunc(){
    printf("test func");
}

错误:invalid use of non-static member function 'void QAction::triggered(bool)
                                         ^

最佳答案

您需要将指向函数的指针传递给connect。您还需要传递一个指向接收对象的指针:

QObject::connect(actionNewNote, &QAction::triggered, this, &Traymenu::testFunc);

注意&之前的“QAction::triggered”。

关于c++ - Qt5 C++将触发的QAction连接到成员函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21715386/

10-11 18:45