Qt 将 QAction 连接到带参数的函数
Qt connect QAction to function with arguments
在我的 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": can't convery arg 2 from "void (__thiscall QAction:: )(bool)"
to "const char *"
我的示例函数:
void fuction(char x, char y, int z);
感谢您的任何建议。
您想使用 std::bind
,如:
connect(MyAction, &QAction::triggered, std::bind(&function, x, y, z));
function(arguments)
是一个函数调用,您想将函数绑定到参数并创建新的可调用对象,使用 std::bind
:
connect(MyAction, &QAction::triggered, std::bind(function, arguments));
或者您可以使用 lambda function:
connect(MyAction, &QAction::triggered, [this]()
{
function(arguments);
});
在我的 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": can't convery arg 2 from "void (__thiscall QAction:: )(bool)" to "const char *"
我的示例函数:
void fuction(char x, char y, int z);
感谢您的任何建议。
您想使用 std::bind
,如:
connect(MyAction, &QAction::triggered, std::bind(&function, x, y, z));
function(arguments)
是一个函数调用,您想将函数绑定到参数并创建新的可调用对象,使用 std::bind
:
connect(MyAction, &QAction::triggered, std::bind(function, arguments));
或者您可以使用 lambda function:
connect(MyAction, &QAction::triggered, [this]()
{
function(arguments);
});