为什么第一句需要类型转换,第二句不需要?
connect(spinbox,static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),slider,&QSlider::setValue); connect(slider,&QSlider::valueChanged,spinbox,&QSpinBox::setValue);
收起
因为QSpinBox的valueChanged有重载,就是同样名称的成员函数有不同的参数,所以需要告诉编译器是哪个。虽然在QSpinBox的文档里乍一看好像没有两个valueChanged,实际在Obsolete members里还有一个,所以在代码里还是存在的。不过你这个写法不是Qt官方推荐的处理重载信号的办法,根据文档推荐的是这种写法:
connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged), ...);
请问槽函数为什么可以直接写呢?
槽函数你是说setValue吗,因为setValue没有重载啊
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!