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

use*_*975 5 c++ qt

如何QAction直接连接lambda插槽?

QMenu m;
Run Code Online (Sandbox Code Playgroud)

工作:

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

不工作:

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

错误:

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

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

这是在Qt 5.3中.

Rei*_*ica 6

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