对一批类型相同的控件绑定信号槽,可以进行批量操作。
以下面的例子:
我有10个QLineEdit控件,分别命名为edt1…edt10
并要求他们控制输入框的输入范围为0-255
for(int i=1;i<=10;i++)
{
QLineEdit *edt = this->findChild<QLineEdit*>("edt"+QString::number(i));
//获取名为edt1到edt10的QLineEdit对象
connect(edt,&QLineEdit::textChanged,this,&Widget::edtchanged);
}
//槽函数edtchanged()
void on_edt_changed(QString arg1)
{
if(arg1.toInt()<=255)
return;
else{
//方法一:获取当前焦点控件,对其操作
QWidget *wid=QApplication::focusWidget();
if(wid->inherits("QLineEdit"))//判断其是否继承于QLineEdit
{
QLineEdit *edt = qobject_cast<QLineEdit*>(wid);
edt->setText("255");
}
//方法二:直接获取信号发送方
QLineEdit *edt = qobject_cast<QLineEdit*>(sender());
edt->setText("255");
}
}