2016-04-19 55 views
2

在我的Qt 5.6程序中,我需要連接QMenu單擊(QAction)才能運行並提供一些參數。我可以連接不帶參數的功能,它是工作:Qt連接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); 

謝謝你的任何建議。

回答

4

function(arguments)是一個函數調用,您想要的參數綁定功能,創造新的可調用的對象,而不是使用std::bind

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

或者您可以使用lambda function

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

謝謝,它解決了我的問題:) – km2442

3

你想用std::bind爲:

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