QSignalMapper
信号映射器
这次的应用是 计算器,由于有多个按钮功能是类似的,可以绑定到同一个槽函数, 但是考虑到 PushButton 类没有 int 参数的 信号, 所以利用映射器进行
mapper = new QSignalMapper(this);
/*
* 映射信号
*/
connect(ui->btn_0, SIGNAL(clicked()),
mapper,SLOT(map()));
mapper->setMapping(ui->btn_0,0);//绑定传递值
/*连接映射器信号 到设定的槽函数*/
connect(mapper, SIGNAL(mapped(int)),
this, SLOT(setNumber(int))
);
槽函数
void Clc::setNumber(int n)
{
if(ui->lineEdit->text() == QString::number(0))
{
ui->lineEdit->clear();
}
ui->lineEdit->setText(ui->lineEdit->text().append(QString::number(n)));
}