лямбда (блок) слот через Objective-C в Qt

Мне нужно смешать файлы C ++ и Objective-c (++). У меня есть стек в следующей задаче:
У меня есть код:

connect(menu_action,&QAction::triggered, [=]()
{
//do_smthing();
});

Но когда я пытаюсь скомпилировать файл, содержащий этот код (файл .mm), у меня появляется ошибка «исключенное выражение».

исключенное выражение и компилятор указывают на символ = после символа [,

Как я могу перестроить этот код в Objective-C?

0

Решение

Ваш синтаксис плохой. Это должно читать: connect(menu_action, &QAction::triggered, [=]{do_smthing();});

Обратите внимание на конечную скобку перед точкой с запятой.

Стоит сказать, что если вы просто вызываете функцию в своей лямбде, вы должны предпочесть указатели функций лямбдам. Это сохранит в Qt поддержку сигналов и слотов, и вы сможете звонить sender() в вашем слоте.

1

Другие решения


По вопросам рекламы [email protected]