I'm not understanding what is going on with your const or not. The slot CommitData() must not be const. Is it??
Hmm, you mean you call it from CEditorDelegate::createEditor(), that is const, so its this is const, and you can't then use that for the slot object? Then I really don't know why it's OK for the connect() to actual slot but not to lambda (I suspect it's this issue, not because the new CommitData(QPushButton *btn) parameter....
Is your CommitData() const? Doesn't look like it. If you made it const does that allow the connect()?
I think this has crossed with your latest. I believe you show there you have found a way. I prefer the second one.
Basically you have raised a "gotcha": createEditor() is const, and that prevents you from connecting a slot to this inside it, which is something one might well want to do. It (apparently) works when &CEditorDelegate::CommitData is passed on its own as a standalone argument, but not if you try a lambda with this->CommitData(). If the C++ super-experts here see this they might comment....