在Qt中,我正在尝试为GUI添加一些快捷方式。我可以简单地通过定义这样的每个快捷方式,然后将它们视为各自的功能:
QObject::connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_B), this), SIGNAL(activated()), this, SLOT(myFunc()));
上面的行按预期工作。但是,我想避免为每个快捷方式创建不同的功能。这就是我想使用lambda表达式的原因。我想让这段代码工作:
QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_B), this);
QObject::connect(shortcut, SIGNAL(activated()), [=]()
{
myFunc();
});
但是,不允许来自上方的connect
。我该如何解决这个问题?
答案 0 :(得分:4)
答案 1 :(得分:1)
这就是我使用C ++ 11 lambda语法的方法:
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);