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);
});