Qt将QAction与参数

时间:2016-04-19 17:44:30

标签: c++ qt qaction

在我的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":不能来自" void(__thiscall QAction :: )(bool)& #34;   to" const char *"

我的示例功能:

void fuction(char x, char y, int z);

感谢您的任何建议。

2 个答案:

答案 0 :(得分:5)

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

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

或者您可以使用lambda function

connect(MyAction, &QAction::triggered, [this]()
{
    function(arguments);
});

答案 1 :(得分:4)

您希望使用std::bind,如下所示:

connect(MyAction, &QAction::triggered, std::bind(&function, x, y, z));