In my Qt 5.6 program I need to connect QMenu
Click (QAction
) to function and provide some arguments. I can connect to function without arguments and it is working:
connect(MyAction, &QAction::triggered, function);
But, when I'm trying to add some arguments:
connect(MyAction, &QAction::triggered, function(arguments));
I'm getting an error:
C2664: "QMetaObject::Connection QObject::connect(const QObject *,const char *,const char ,Qt::ConnectionType) const": can't convery arg 2 from "void (__thiscall QAction:: )(bool)" to "const char *"
My example function:
void fuction(char x, char y, int z);
Thank you for any advice.
function(arguments)
is a function call, you want to bind the function to the arguments and create new callable object instead, using std::bind
:
connect(MyAction, &QAction::triggered, std::bind(function, arguments));
or you can use a lambda function:
connect(MyAction, &QAction::triggered, [this]()
{
function(arguments);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With