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不允许以上所述。我该如何解决?
也许您应该使用新的样式语法,例如:
QObject::connect(shortcut, &QShortcut::activated, [=]()
{
myFunc();
});
Run Code Online (Sandbox Code Playgroud)