2016-04-19 63 views
2

私のQt 5.6プログラムに接続する必要がありますQMenuQAction)をクリックして機能させ、いくつかの引数を指定します。私は、引数なしで機能するように接続することができ、それが働いている:Qt connect 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を使用したい

答えて

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

connect(MyAction, &QAction::triggered, std::bind(&function, x, y, z)); 
関連する問題