将QMenu :: addAction直接连接到lambda(函数签名不匹配)

时间:2016-11-18 19:08:18

标签: c++ qt

如何直接将QAction与lambda插槽连接?

QMenu m;

工作:

QAction newSubfolder(QIcon(":/icons/newfolder.png"),tr("New Subfolder"),&m);
m.addAction(&newSubfolder);
connect(&newSubfolder,&QAction::triggered,
        this,[this,p](){qDebug()<<"New Subfolder";});

不工作:

m.addAction(QIcon(":/icons/newfolder.png"),tr("New Subfolder"),
                [this,p](){qDebug()<<"New Subfolder";});

错误:

No matching function for call to 'QMenu::addAction(QIcon, QString, FolderMenuWidget::showContextMenu(QPoint)::__lambda0)'
                 [this,p](){qDebug()<<"New Subfolder";});
                                                       ^

是的我看到了错误消息,但我不明白我需要为lambda插槽更改什么。如果我在lambda之前添加成员指针this,它也不起作用。

这是在Qt 5.3中。

1 个答案:

答案 0 :(得分:6)

您正在寻找的addAction超载已在Qt 5.6中添加。