4
QAction
をラムダスロットに直接接続するにはどうすればよいですか?QMenu :: addActionを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";});
^
はい、私はエラーメッセージが表示されるが、私は私が必要なものを理解していないがラムダスロットのために変更する。また、メンバーポインタthis
をラムダの前に追加すると、動作しません。
これはQt 5.3にあります。
'QMenu :: addAction'にはラムダを必要とするオーバーロードがあります。 – aschepler
ファンクタを使用するAddActionがあります。 '[this、p](bool){qDebug()<<" New Subfolder ";}' –
Qt 5.6では、関数のオーバーライドが新しく追加されました。 –