【问题标题】:Pass multiples arguments to a slot Qt将多个参数传递给插槽 Qt
【发布时间】:2022-01-10 14:21:14
【问题描述】:

我正在使用 Qt 水平滑块,我想将它的 valueChanged 信号连接到我定义的插槽。但是,由于我使用滑块设置的 int,我需要访问此插槽内的特定成员来修改变量。到目前为止,我的连接线如下所示:

connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setVariable(int)));

是否可以将多个参数传递给我的插槽?我想做的是:

connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setVariable(int, pointerToMember*)));

如果没有,我该如何继续?

谢谢

【问题讨论】:

  • pointerToMember*的值从何而来?如果在调用 connect 时已知它,那么您可以使用捕获 lambda 作为插槽。
  • 我的指针是在我创建此连接的相同方法中定义的,之前几行,所以我想我可以试试你的建议
  • 你使用的是哪个 QT 版本?
  • 我正在开发 Qt 6.2.1

标签: c++ qt signals connect slots


【解决方案1】:

可以,但是你需要使用新的连接方式,所以你可以传递 lambda 函数

connect(slider, &QAbstractSlider::valueChanged, this, [=](int &new_value) { this->setVariable(new_value, ... );});

编辑: 这仅适用于 Qt5 及更高版本

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 2013-11-11
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2012-01-08
    • 2016-09-05
    相关资源
    最近更新 更多