记录一下使用qt信号和槽使用时遇到的问题,我创建ImageButton中定义了一个发出int和bool信号和发送的槽:
signals:
void selectedClick(int, bool);
slots:
void emitSelectedClick() {
selected = !selected;
emit selectedClick(index, selected);
}
在另一边使用connect连接却发现,无论什么时候b都是固定的值,没有随着变化而变化,在发送信号的那边监听select时却是正确变化
connect(button, &ImageButton::selectedClick, [&](bool b) {
qDebug() << b;
});//连接信号
引发这个问题的原因是qt把传递的int index当成bool类型被槽函数获取到了!而index通常不会变化,改变连接参数后,信号接收正常,所以qt连接信号时最好把全部参数写上,不要图方便省略
connect(button, &ImageButton::selectedClick, [&](int index, bool b) {
qDebug() << b;
});//连接信号