В моей программе 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);
Спасибо за любой совет.
function(arguments)
это вызов функции, вы хотите связать функцию с аргументами и создать вместо нее новый вызываемый объект, используя std::bind
:
connect(MyAction, &QAction::triggered, std::bind(function, arguments));
или вы можете использовать лямбда-функция:
connect(MyAction, &QAction::triggered, [this]()
{
function(arguments);
});
Вы хотите использовать std::bind
как в:
connect(MyAction, &QAction::triggered, std::bind(&function, x, y, z));