2016-06-23 6 views
1

Qtでは、私のGUIにいくつかのショートカットを追加しようとしています。期待どおりに動作上からショートカットがトリガされたときのラムダ式(Qt)

QObject::connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_B), this), SIGNAL(activated()), this, SLOT(myFunc())); 

行を:私は、それぞれの機能に簡単にこのようなショートカットのそれぞれをdeffiningことによってそれを行うと、その後、彼らのようなことができます。しかし、ショートカットごとに異なる機能を作成しないようにしたいと思います。だから私はラムダ式を使いたいのです。

QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_B), this); 
QObject::connect(shortcut, SIGNAL(activated()), [=]() 
{ 
    myFunc(); 
}); 

しかし、上記からconnectが許可されていません:私は、コードの作業のこのビットを作るためにトリングです。これをどうすれば解決できますか?

QObject::connect(shortcut, &QShortcut::activated, [=]() 
{ 
    myFunc(); 
}); 

Reference

答えて

3

はたぶん、あなたは新しいスタイルの構文などを使用する必要があります

QObject::connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this), &QShortcut::activated, [=](){ this->close(); }); 

そして、これはどのようにあります私は(以前に宣言した)スロットでそれを行います:

QObject::connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_T), this), &QShortcut::activated, this, &ClassName::fancySlot); 
0

これは私がC++ 11のラムダ構文でそれを行う方法です:

関連する問題