触发快捷方式(QT)时的lambda表达
Lambda expression when shortcut triggered (Qt)
在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
。我该如何解决?
也许您应该使用新样式语法,例如:
QObject::connect(shortcut, &QShortcut::activated, [=]()
{
myFunc();
});
参考
这就是我使用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);
相关文章:
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 当使用lambda进行变量的复杂初始化时,如何处理从内部抛出的lambda外部异常
- 从两个 lambda 的函数返回 lambda 时的链接器错误
- 尝试使用具有尾随返回类型的 lambda 进行 SFINAE 时出现硬错误
- 使用 lambda 表达式创建线程时,如何为每个线程提供自己的 lambda 表达式副本
- 当命名的 lambda 用作模板类参数或构造函数参数时,类模板无法编译
- 将 lambda 作为参数传递时的重载函数
- 当另一个调用 lambda 使用默认捕获时,lambda 的闭包可能会被破坏吗?
- 触发快捷方式(QT)时的lambda表达
- 崩溃当std ::函数是从lambda返回的VS 2012中返回的值时的崩溃
- std :: async和std ::包装rvalue参考lambda时的差异
- 嵌套的lambda表达式在用Visual C++编译和生成巨大的对象文件时速度非常慢
- 将shared_ptr传递给lambda时的C++内存管理
- 运行时的C++lambda实现
- 当我尝试caputre〔this〕时,用于回调函数的lambda表达式失败,原因是什么
- 当在嵌套的lambda中使用“decltype”时,GCC的分离错误
- GCC vs clang -使用' make_overload '可变lambda继承时的模糊重载
- 使用lambda对std::函数赋值时的访问冲突
- libstdc++和libc++在用lambda构造std::函数时的不同行为
- 指定lambda捕获时的c++ 11编译错误