4

私の Qt 5.6 プログラムでは、QMenuClick ( 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)"から引数 2 を変換できません「const char *」に

私の関数例:

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

アドバイスありがとうございます。

4

2 に答える 2

10

function(arguments)関数呼び出しである場合、関数を引数にバインドし、代わりに次を使用して新しい呼び出し可能なオブジェクトを作成しますstd::bind

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

または、ラムダ関数を使用できます。

connect(MyAction, &QAction::triggered, [this]()
{
    function(arguments);
});
于 2016-04-19T17:49:45.467 に答える
4

次のように使用std::bindします。

connect(MyAction, &QAction::triggered, std::bind(&function, x, y, z));
于 2016-04-19T17:48:05.737 に答える