c – Qt将QAction连接到带参数的函数

在我的Qt 5.6程序中,我需要连接QMenu Click(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);

谢谢你的任何建议.

解决方法:

function(arguments)是一个函数调用,您希望将函数绑定到参数并使用std::bind创建新的可调用对象:

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

或者您可以使用lambda function

connect(MyAction, &QAction::triggered, [this]()
{
    function(arguments);
});
上一篇:Qt实战笔记-从零开始搭建一套库存管理系统-(三)UI框架搭建-02


下一篇:QT QAction