Это должно работать, вам просто не хватает имени указателя функции.
auto createShortcuts = [ = ]( const QString &sequence, void ( MyObject::* myFunc )() )
{
QShortcut *sc = new QShortcut( QKeySequence( sequence ), this );
connect( sc, &QShortcut::activated, mMyObject, myFunc);
};
createShortcuts( QStringLiteral( "whatever" ), &MyObject::mySlot );
Edit:
Приведенное выше решение работает только в том случае, если объявлено mMyObject
в той же области, в которой объявлено createShortcuts
, ниже безопаснее.
auto createShortcuts = [ = ]( const QString &sequence, const MyObject* mMyObject, void ( MyObject::* myFunc )() )
{
QShortcut *sc = new QShortcut( QKeySequence( sequence ), this );
connect( sc, &QShortcut::activated, mMyObject, myFunc);
};
auto obj = new MyObject();
createShortcuts( QStringLiteral( "whatever" ), obj, &MyObject::mySlot );