当我尝试将一个默认参数和一个非默认参数的函数连接到QSlider时,我收到此错误:
Set items=new HashSet();
这是否意味着连接到某个功能的QWidget不支持默认参数?有办法解决这个问题吗?
以下是我的尝试:
230: error: static assertion failed: The slot requires more arguments than the signal provides.
Q_STATIC_ASSERT_X(int(SignalType::ArgumentCount) >= int(SlotType::ArgumentCount),
^
答案 0 :(得分:3)
这是否意味着连接到函数的QWidget不支持默认参数?
来自信号和广告位的documentation:
信号的签名必须与接收槽的签名匹配。
因此我会说不,这是不可能的。
有没有办法解决这个问题?
例如,如果编译器支持C ++ 11,则可以使用lambda函数 像这样:
connect(sliderA, &QSlider::valueChanged, [this](int pos){ someSliderChanged(pos); });
否则,定义一个(我说)前向插槽,它没有额外的参数,并将其绑定到信号上。
有关QtObject::connect
的重载,请参阅documentation了解更多详情。