gpt4 book ai didi

qt - 将参数传递给槽

转载 作者:行者123 更新时间:2023-12-03 05:23:12 26 4
gpt4 key购买 nike

我想用一堆 QActions 和 QMenus 覆盖 mouseReleaseEvent...

connect(action1, SIGNAL(triggered()), this, SLOT(onStepIncreased()));

connect(action5, SIGNAL(triggered()), this, SLOT(onStepIncreased()));

connect(action10, SIGNAL(triggered()), this, SLOT(onStepIncreased()));

connect(action25, SIGNAL(triggered()), this, SLOT(onStepIncreased()));

connect(action50, SIGNAL(triggered()), this, SLOT(onStepIncreased()));

所以我想将一个参数传递给槽onStepIncreased(正如你可以想象的那样,它们是1,5,10,25,50)。你知道我该怎么做吗?

最佳答案

使用 Qt 5 和 C++11 编译器,执行此类操作的惯用方法是为 connect 提供一个仿函数:

connect(action1,  &QAction::triggered, this, [this]{ onStepIncreased(1); });
connect(action5, &QAction::triggered, this, [this]{ onStepIncreased(5); });
connect(action10, &QAction::triggered, this, [this]{ onStepIncreased(10); });
connect(action25, &QAction::triggered, this, [this]{ onStepIncreased(25); });
connect(action50, &QAction::triggered, this, [this]{ onStepIncreased(50); });

connect 的第三个参数名义上是可选的。它用于设置仿函数将在其中执行的线程上下文。当仿函数使用QObject实例时,它总是必要的。如果仿函数使用多个 QObject 实例,它们应该有一些共同的父级来管理它们的生命周期,并且仿函数应该引用该父级,或者应该确保对象的生命周期比仿函数长。

在 Windows 上,这适用于 MSVC2012 及更高版本。

关于qt - 将参数传递给槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com