快捷方式触发时的Lambda表达式(Qt)

kar*_*l71 3 c++ lambda qt signals-slots

在Qt中,我试图向GUI添加一些快捷方式。我可以这样简单地定义每个快捷方式,然后将它们喜欢成各自的功能:

QObject::connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_B), this), SIGNAL(activated()), this, SLOT(myFunc()));
Run Code Online (Sandbox Code Playgroud)

上面的线按预期工作。但是,我想避免为每个快捷方式创建不同的功能。这就是为什么我想使用lambda表达式。我正在努力使以下代码起作用:

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

但是,connect不允许以上所述。我该如何解决?

Max*_*kov 6

也许您应该使用新的样式语法,例如:

QObject::connect(shortcut, &QShortcut::activated, [=]() 
{
    myFunc();
});
Run Code Online (Sandbox Code Playgroud)

参考