Qt connect QAction для работы с аргументами

В моей программе Qt 5.6 мне нужно подключиться QMenu Нажмите (QAction) функционировать и предоставить некоторые аргументы. Я могу подключиться к функции без аргументов, и она работает:

connect(MyAction, &QAction::triggered, function);

Но когда я пытаюсь добавить некоторые аргументы:

connect(MyAction, &QAction::triggered, function(arguments));

Я получаю сообщение об ошибке:

C2664: «QMetaObject :: Connection QObject :: connect (const QObject
*, const char *, const char ,Qt :: ConnectionType) const «: не может передать аргумент 2 из» void (__thiscall QAction :: ) (bool) «to» const char * «

Мой пример функции:

void fuction(char x, char y, int z);

Спасибо за любой совет.

3

Решение

function(arguments) это вызов функции, вы хотите связать функцию с аргументами и создать вместо нее новый вызываемый объект, используя std::bind:

connect(MyAction, &QAction::triggered, std::bind(function, arguments));

или вы можете использовать лямбда-функция:

connect(MyAction, &QAction::triggered, [this]()
{
function(arguments);
});
5

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

Вы хотите использовать std::bind как в:

connect(MyAction, &QAction::triggered, std::bind(&function, x, y, z));
4

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